求教tms320c64555关于mcbsp和EDMA的问题

查看: 1349|回复: 3
求教C6455关于mcbsp和EDMA的问题?急!谢谢了!
我用mcbsp和edma将同步串口数据传入到DSP中,
就是那种数据和时钟都对应。
设想的过程是外部数据到mcbsp然后再通过EDMA传输到dsp中,
edma传输完成后启动中断8,然后dsp到中断8中去读数据处理,
但是程序就是启动不出来,
请高人帮忙看看程序的设置,
十分着急,谢谢了!
/////多通道缓冲串口的配置
CSL_McbspGlobalSetup mcbspGbl = {
& & CSL_MCBSP_IOMODE_TXDIS_RXEN,
& & CSL_MCBSP_DLBMODE_OFF,& && &//////关闭循环模式
& & CSL_MCBSP_CLKSTP_DISABLE
/** Receive Data Setup defaults */
CSL_McbspDataSetup mcbspRxData = {
& & CSL_MCBSP_PHASE_SINGLE,& &&&///////1 phases in a frame& && && && && && && && && && &
& & CSL_MCBSP_WORDLEN_8,& && && && && && && && && && && && &
& & 8,& && && && && && && && && & //// FRMLEN1 ////
& & CSL_MCBSP_WORDLEN_8,& && && &&&//// Default value for phase2////
& & 2,& && && && && && && && && &&&//// FRMLEN2 ////& && && && && && && && && && && && && && && && && &
& & CSL_MCBSP_FRMSYNC_DETECT,& && & //// detect frame synchronisation ////& && && && && && && && && &&&
& & CSL_MCBSP_COMPAND_OFF_MSB_FIRST,& && && && && && && && &&&
& & CSL_MCBSP_DATADELAY_2_BITS,
& & CSL_MCBSP_RJUSTDXENA_RJUST_RZF, //// RCV setting - right justify, fill MSBs with zeros ////
& & CSL_MCBSP_INTMODE_ON_READY,& && &//// Interrupt generated on RRDY of RCV or XRDY of XMT ////////在这里可以设置桢中断方式& &
& &///CSL_MCBSP_INTMODE_ON_FSYNC,
& & CSL_MCBSP_32BIT_REVERS_ENABLE
/** Transmit Data Setup defaults */
CSL_McbspDataSetup mcbspTxData = {
& & CSL_MCBSP_PHASE_SINGLE,& && && && && && && && && && && &&&
& & CSL_MCBSP_WORDLEN_8,& && && && && && && && && && && && &
& & 8,& && && && && &&&////FRMLEN1 ////
& & CSL_MCBSP_WORDLEN_8, //// Default value ////& && && && && && && && && && && && && &&&
& & 2,& && && && && && & //// FRMLEN2 ////& && && && && && && && && && && && && && && && && && &&&
& & CSL_MCBSP_FRMSYNC_DETECT,& && && && && && && && && && && &
& & CSL_MCBSP_COMPAND_OFF_MSB_FIRST,& && && && && && && && &&&
& & CSL_MCBSP_DATADELAY_1_BIT,& && && && && && && && && && &&&
& & CSL_MCBSP_RJUSTDXENA_DXENA_OFF,
& & CSL_MCBSP_INTMODE_ON_READY,& && && && && && && &
& & CSL_MCBSP_32BIT_REVERS_DISABLE
/** Clock Setup defaults */
CSL_McbspClkSetup mcbspClock = {
& & CSL_MCBSP_FSCLKMODE_EXTERNAL,& & //// XMT Frame-sync////&&/////外触发& && && &&&
& & CSL_MCBSP_FSCLKMODE_EXTERNAL,& & //// RCV Frame-sync ////& && && && &
& & CSL_MCBSP_TXRXCLKMODE_EXTERNAL,&&//// XMT clock ////& && && && && && && &
& & CSL_MCBSP_TXRXCLKMODE_EXTERNAL,&&//// RCV clock ////& && && && && && && && &&&
& & CSL_MCBSP_FSPOL_ACTIVE_HIGH,& &&&//// XMT Frame-sync Active High ////& && && && &&&
& & CSL_MCBSP_FSPOL_ACTIVE_HIGH,& &&&//// RCV Frame-sync Active High ////& && && && && && &
& & CSL_MCBSP_CLKPOL_TX_RISING_EDGE, //// XMT clock Rising Edge ////& && && && && &
& & CSL_MCBSP_CLKPOL_RX_FALLING_EDGE,//// RCV clock Falling Edge ////
& & 2,& && && && && && && && && &&&//// Frame-sync pulse width=2 CLKG periods ////
& & 1024,& && && && && && & //// Frame-sync pulse period = 1024 CLKG periods ////
& & 1,& && && && && && && &//// CLKGDIV = 1 means divide by input clock by 2 ////
& & CSL_MCBSP_SRGCLK_CLKCPU,& && && &//// SCLKME = 0, CLKSM = 1 ////&&////可以是CPU产生,可以是中断输入管角产生& && && && && && && && &
& & CSL_MCBSP_CLKPOL_SRG_RISING_EDGE, //// CLKS pin signal Rising Edge ////& && && &&&
& & CSL_MCBSP_TXFSMODE_SRG,& && && & ////If FSGM = 1, XMT Frame-sync driven by& && && && && && && && && && && && &////& &sample rate generater, FSG signal ////&&//// Enables the frame sync generation mode ////& && && && && && && && && && && && && && && && && && &&&
& & CSL_MCBSP_CLKGSYNCMODE_ON& &//// GSYNC = 0 means no clock synchronisation ////& &
CSL_McbspMulChSetup mcbspMul = {
& & & && &(CSL_McbspPartMode)CSL_MCBSP_PARTMODE_2PARTITION,& & /* RX */&&
& & (CSL_McbspPartMode)CSL_MCBSP_PARTMODE_2PARTITION,& & /* TX */
& & (Uint16)1,& && && && && && &&&//// Receive multichannel selection enable //// /*&&rxMulChSel */
& & (Uint16)2,& && && && && && && &//// Transmit multichannel selection enable /////*&&txMulChSel */
& & (CSL_McbspPABlk)CSL_MCBSP_PABLK_0,& & /* rxPartABlk */& && && && && &
& & (CSL_McbspPBBlk)CSL_MCBSP_PBBLK_1,& & /* rxPartBBlk */& && && && && &&&
& & (CSL_McbspPABlk)CSL_MCBSP_PABLK_0,& & /* txPartABlk */& && && && && &&&
& & (CSL_McbspPBBlk)CSL_MCBSP_PBBLK_1& &&&/* txPartABlk */
CSL_McbspHwSetup myHwSetup = {
& & &mcbspGbl,
& & &mcbspRxData,
& & &mcbspTxData,
& & &mcbspClock,
& & &mcbspMul,
& & CSL_MCBSP_EMU_STOP,
& & & & ………………
& & & & CSL_edma3ParamSetup(hParamBasic,&myParamSetup);
& & & & CSL_edma3HwChannelControl(hChannel, CSL_EDMA3_CMD_CHANNEL_ENABLE, NULL);
& & & & regionIntr.region = CSL_EDMA3_REGION_0;
& & & & regionIntr.intr& &= 0x2000;& && &
& & & & regionIntr.intrh&&= 0;
& & & & CSL_edma3HwControl(hModuleEdma,CSL_EDMA3_CMD_INTR_ENABLE,&regionIntr);
& & & & ctrlMask = CSL_MCBSP_CTRL_RX_ENABLE;
& & & & CSL_mcbspHwControl(hMcbsp, CSL_MCBSP_CMD_RESET_CONTROL, &ctrlMask);&&
& & & & WAIT_FOR_2_CLK;& & & &
& && &&&………………
void intc_init()
& & & & ………………
& & & & ///中断8是是给多通道缓冲串口和EDMA
& & & & vectId = CSL_INTC_VECTID_8;
& & & & EDMAHandle = CSL_intcOpen(&intcEDMA,CSL_INTC_EVENTID_EDMA3CC_INT0,&vectId,NULL);
& & & & isr_edma.handler = (CSL_IntcEventHandler)&func_int8;
& & & & isr_edma.arg = EDMAH
& & & & CSL_intcPlugEventHandler(EDMAHandle,&isr_edma);
& & & & ………………
void mcbsp_init()
& & & && && &//// Clear local data structures
& & memset(&mcbspObj, 0, sizeof(CSL_McbspObj));
& & memset(&HwSetup_mcbsp, 0, sizeof(CSL_McbspHwSetup));
& & & && &// Initialize the MCBSP CSL module //
& & status = CSL_mcbspInit(&pContext_mcbsp);
& & ///Open the CSL module
& & hMcbsp = CSL_mcbspOpen (&mcbspObj, CSL_MCBSP_0, NULL, &status);
& & ctrlMask =& &CSL_MCBSP_CTRL_SRG_ENABLE
& && && && && &| CSL_MCBSP_CTRL_FSYNC_ENABLE
& && && && && &| CSL_MCBSP_CTRL_TX_ENABLE
& && && && && &| CSL_MCBSP_CTRL_RX_ENABLE;
& &//////因为HWcontrol函数要尽量避免使用,因此要把函数分解开使用,直接设置寄存器
& &status = CSL_mcbspHwControl(hMcbsp, CSL_MCBSP_CMD_RESET_CONTROL, &ctrlMask);
& & & & WAIT_FOR_2_CLK;
& &status = CSL_mcbspHwSetup(hMcbsp, &myHwSetup);
& &status = CSL_mcbspGetHwSetup (hMcbsp , &HwSetup_mcbsp);
& &channel.channelNo = 0;
& &channel.operation = CSL_MCBSP_CHCTRL_RX_ENABLE;
& &CSL_mcbspHwControl (hMcbsp, CSL_MCBSP_CMD_CHANNEL_CONTROL, &channel);
& &channel.channelNo = 31;
& &channel.operation = CSL_MCBSP_CHCTRL_RX_ENABLE;
& &CSL_mcbspHwControl (hMcbsp, CSL_MCBSP_CMD_CHANNEL_CONTROL, &channel);
& &WAIT_FOR_2_CLK;
& &// Enable MCBSP transmit and receive
& &ctrlMask = CSL_MCBSP_CTRL_TX_ENABLE | CSL_MCBSP_CTRL_RX_ENABLE;
& &CSL_mcbspHwControl(hMcbsp, CSL_MCBSP_CMD_RESET_CONTROL, &ctrlMask);& &
void edma3_init()
& & & & ///1
& & & & // 初始化配置:建立句柄指针
& & & & status = CSL_edma3Init(&edmaContext);
& & & & hModuleEdma = CSL_edma3Open(&edmaObj,CSL_EDMA3,NULL,&status);
& & & &&&///2
& & & &&&//// Query Module Info
& & & &&&CSL_edma3GetHwStatus(hModuleEdma,CSL_EDMA3_QUERY_INFO, &info);
& & & & ///3
& & & & // 设置DRAE寄存器组的值
& & & & regionAccess.region = CSL_EDMA3_REGION_0;
& & & & regionAccess.drae = 0xFFFF;
& & & & regionAccess.draeh = 0;
& & & & hModuleEdma-&regs-&DRA[regionAccess.region].DRAE |= regionAccess.
& & & & hModuleEdma-&regs-&DRA[regionAccess.region].DRAEH |= regionAccess.
&&/// Open Receive channel
&&chParam.regionNum = CSL_EDMA3_REGION_0;
&&chParam.chaNum = CSL_EDMA3_CHA_REVT0;
&&hChannel1 = CSL_edma3ChannelOpen(&ChObj1,CSL_EDMA3,&chParam,&status);
&&/// Channel Setup
&&hParamBasic1 = CSL_edma3GetParamHandle(hChannel1,CSL_EDMA3_CHA_REVT0,&status);
&&//// Param Setup/////这里面这个函数里面的参数要重新配置
&&myParamSetup1.option = CSL_EDMA3_OPT_MAKE(CSL_EDMA3_ITCCH_DIS,CSL_EDMA3_TCCH_DIS,CSL_EDMA3_ITCINT_DIS,CSL_EDMA3_TCINT_EN,CSL_EDMA3_CHA_REVT0,CSL_EDMA3_TCC_NORMAL,CSL_EDMA3_FIFOWIDTH_32BIT,CSL_EDMA3_STATIC_DIS, CSL_EDMA3_SYNC_A,CSL_EDMA3_ADDRMODE_INCR,CSL_EDMA3_ADDRMODE_INCR);& && && && && &
&&///myParamSetup1.option =CSL_EDMA3_OPT_MAKE(FALSE,FALSE,FALSE,TRUE,CSL_EDMA3_CHA_REVT1,CSL_EDMA3_TCC_NORMAL,CSL_EDMA3_FIFOWIDTH_32BIT,CSL_EDMA3_STATIC_DIS,CSL_EDMA3_SYNC_A,CSL_EDMA3_ADDRMODE_INCR,CSL_EDMA3_ADDRMODE_INCR);
&&myParamSetup1.srcAddr = (Uint32)CSL_MCBSP_0_RX_EDMA_REGS;
&&uuu = (Uint32)CSL_MCBSP_0_RX_EDMA_REGS;
&&myParamSetup1.dstAddr = (Uint32)0x009D0000;
&&myParamSetup1.aCntbCnt = CSL_EDMA3_CNT_MAKE(1,1);& && &
&&myParamSetup1.srcDstBidx = CSL_EDMA3_BIDX_MAKE(1,0);& &&&
&&myParamSetup1.linkBcntrld = CSL_EDMA3_LINKBCNTRLD_MAKE(CSL_EDMA3_LINK_NULL,1);& &&&
&&myParamSetup1.srcDstCidx = CSL_EDMA3_CIDX_MAKE(0,0);& &&&
&&myParamSetup1.cCnt = 1;& && && &
&&CSL_edma3HwChannelSetupParam (hChannel1, CSL_EDMA3_CHA_REVT0);
&&CSL_edma3HwChannelSetupQue(hChannel1, CSL_EDMA3_QUE_1);
在初始化函数中,先调用mcbsp_init();再调用edma3_init();
请问是哪里的问题,谢谢指点
俺软件不熟&&杀死一片脑细胞了& &帮顶
一步一步看,“程序启动不起来”是执行到哪里了?
先定位问题
另外,你的中断配置对了么?
这个正好用到,研究一下
Powered byC6455的MCBSP1+EDMA3传输问题 - C6000(TM)单核 - 德州仪器在线技术支持社区
C6455的MCBSP1+EDMA3传输问题
发表于9月前
<input type="hidden" id="hGroupID" value="31"
&我在做C6455芯片的MCBSP1的EDMA3传输,(传输位宽为8bit,同步模式A,在DLB模式下测试)遇到了一些问题:&/p>
&p>& & & 1、每次完成EDMA传输,产生中断之后,我又要重新对MCBSP1的寄存器进行初始化,才能进行下一次传输,而不是只配置EDMA寄存器就可以(选择的STATIC_DIS);&/p>
&p>& & & &2、每次完成传输,我发现接收总是多接收一个字节(第一个字节固定是0x00),因此我的接收长度比发送长度多一个字节才能接收完整;&/p>
&p>& & & &3、当我把MCBSP1的时钟分频设置成0(1分频)的时候,我发现接收的数据是不完整的,会出现一个字节重复接收两次,有的字节却丢失了(我需要166MHZ的时钟才能满足传输需求);&/p>
&p>& & & 这几个问题有人能给我提供帮助吗?非常感谢。&/p>&div style=&clear:&>&/div>" />
C6455的MCBSP1+EDMA3传输问题
此问题已被解答
All Replies
&我在做C6455芯片的MCBSP1的EDMA3传输,(传输位宽为8bit,同步模式A,在DLB模式下测试)遇到了一些问题:
& & & 1、每次完成EDMA传输,产生中断之后,我又要重新对MCBSP1的寄存器进行初始化,才能进行下一次传输,而不是只配置EDMA寄存器就可以(选择的STATIC_DIS);
& & & &2、每次完成传输,我发现接收总是多接收一个字节(第一个字节固定是0x00),因此我的接收长度比发送长度多一个字节才能接收完整;
& & & &3、当我把MCBSP1的时钟分频设置成0(1分频)的时候,我发现接收的数据是不完整的,会出现一个字节重复接收两次,有的字节却丢失了(我需要166MHZ的时钟才能满足传输需求);
& & & 这几个问题有人能给我提供帮助吗?非常感谢。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
状元51116分
Z T(我需要166MHZ的时钟才能满足传输需求)
McBSP哪能达到这么高的时钟速度啊。
http://processors./index.php/Main_Page
Think Over Before Asking.
http://www.catb.org/~esr/faqs/smart-questions.html#goal
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
我当时看的手册,cpu固定6分频到sysclk3,是166MHz,然后在mcbsp的SRGR&#39;寄存器的CLKGDV写0,不就是可以配置到时钟166MHz吗?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
状元51116分
一个是配置,一个是电气特性能否达到。
比如说CPU的频率你配置到10GHz也是可以配置的啊, 但是实际不能在这么高频率运行。所以你要配置CLKGDV使CLK的频率在100MHz以内(即cycle time &=10ns)
http://processors./index.php/Main_Page
Think Over Before Asking.
http://www.catb.org/~esr/faqs/smart-questions.html#goal
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
&问题解决了。我发现这个很有意思。ESR寄存器和MCBSP的使能寄存器(SPCR),只需要开一个,我开启通道使能之后,再配置了ESR寄存器,就总是第一个字节多收的。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
状元51116分
ESR是event set register,这是用来手动触发,一般用做调试,或者内存到内存传输时用的。如果是用外设的事件触发,不应该设这个寄存器啊。
http://processors./index.php/Main_Page
Think Over Before Asking.
http://www.catb.org/~esr/faqs/smart-questions.html#goal
You have posted to a forum that requires a moderator to approve posts before they are publicly available.查看: 1977|回复: 0
6455的EDMA3+MCBSP
这个工程包括两个文件Edma_interrupt_example.c和edmaIntDispatcher.c,第一个是初始化的程序,第二个为中断服务子程序。最后再附带一个FPGA的Verilog程序,用与产生mcbsp的接收数据。如果想接收更多的数据,修改BUFFSIZE的大小就好了。希望对你有帮助!
下面是第一个文件内容
#define BUFFSIZE 10
#definePING& & 0
#definePONG& & 1
Int16 gBufferXmtPing[BUFFSIZE]; // Transmit PINGbuffer
Int16 gBufferXmtPong[BUFFSIZE]; // Transmit PONGbuffer
Int16 gBufferRcvPing[BUFFSIZE]; // Receive PINGbuffer
Int16 gBufferRcvPong[BUFFSIZE]; // Receive PONGbuffer
volatileUint32& & intFlag = 0;
Uint32& && && && & passStatus = 1;
void tcc1Fxn(void);
void edmaInit(void);
#define WAIT_FOR_2_CLK&&do{& && && && && && && && && && && & \
& && && && && && && && && &volatile int delayCnt =2;& &&&\
& && && && && && && && && &while(delayCnt& 0) --delayC \
& && && && && && && && &&&}while(0)& && && && &
//#define NumOfWords&&100
void init_McBSP0(void);
CSL_Status hwSetupVerify (CSL_McbspHwSetup *,
& && && && && && && && & CSL_McbspHwSetup *
& && && && && && && && & );
CSL_McbspHandle&&hM
//Uint16& &&&xmt[NumOfWords];
//Uint16& &&&rcv[NumOfWords];
CSL_McbspGlobalSetup mcbspGbl = {
& &CSL_MCBSP_IOMODE_TXDIS_RXDIS ,
& &CSL_MCBSP_DLBMODE_OFF,& &//关闭自环模式
& &CSL_MCBSP_CLKSTP_DISABLE
CSL_McbspDataSetup mcbspRxData = {
& &CSL_MCBSP_PHASE_SINGLE,
& &CSL_MCBSP_WORDLEN_8,
& & 1,& && && &&&//frame length
& &(CSL_McbspWordLen)0,
& &//CSL_MCBSP_FRMSYNC_IGNORE, //frame sincignore
& && &&&CSL_MCBSP_FRMSYNC_DETECT,
& &CSL_MCBSP_COMPAND_OFF_MSB_FIRST,
& &CSL_MCBSP_DATADELAY_1_BIT,
& &CSL_MCBSP_RJUSTDXENA_RJUST_RZF ,
& &CSL_MCBSP_INTMODE_ON_READY,
& &//CSL_MCBSP_INTMODE_ON_FSYNC,
& &CSL_MCBSP_32BIT_REVERS_DISABLE
CSL_McbspDataSetup mcbspTxData = {
& &CSL_MCBSP_PHASE_SINGLE,
& &CSL_MCBSP_WORDLEN_8,
& & 1,& && && && && && && && && && && && && && && && && && && & //每次发送一个元素
& &(CSL_McbspWordLen)0,
& &CSL_MCBSP_FRMSYNC_DETECT,
& &CSL_MCBSP_COMPAND_OFF_MSB_FIRST,
& &CSL_MCBSP_DATADELAY_1_BIT,& &&&//发送时,相对于同步信号延时一个clk
& &CSL_MCBSP_RJUSTDXENA_DXENA_OFF,
& &CSL_MCBSP_INTMODE_ON_READY,
& &//CSL_MCBSP_INTMODE_ON_FSYNC,& &
& &CSL_MCBSP_32BIT_REVERS_ENABLE
CSL_McbspClkSetup mcbspClock = {
& &CSL_MCBSP_FSCLKMODE_INTERNAL,& &
& &//CSL_MCBSP_FSCLKMODE_INTERNAL,& &
& && &&&CSL_MCBSP_FSCLKMODE_EXTERNAL,
& &CSL_MCBSP_TXRXCLKMODE_INTERNAL,
& &//CSL_MCBSP_TXRXCLKMODE_INTERNAL,
& &CSL_MCBSP_TXRXCLKMODE_EXTERNAL,
& &CSL_MCBSP_FSPOL_ACTIVE_HIGH,& &
& &CSL_MCBSP_FSPOL_ACTIVE_HIGH,& &
& &CSL_MCBSP_CLKPOL_TX_RISING_EDGE,
& &//CSL_MCBSP_CLKPOL_RX_FALLING_EDGE,
& && &&&CSL_MCBSP_CLKPOL_RX_RISING_EDGE,
& & 0,& && && && && && && && && && &
& &0x8,& && && && && && && && && &
& &0x5,& && && && && && && && && &
& &CSL_MCBSP_SRGCLK_CLKCPU,
& &CSL_MCBSP_CLKPOL_TX_RISING_EDGE ,
& &CSL_MCBSP_TXFSMODE_DXRCOPY,
//& &&&CSL_MCBSP_TXFSMODE_SRG,
& &CSL_MCBSP_CLKGSYNCMODE_OFF&&
CSL_McbspMulChSetup mcbspMul = {
& &CSL_MCBSP_PARTMODE_2PARTITION,
& &CSL_MCBSP_PARTMODE_2PARTITION,
& &(Uint16)0,& && &
& &(Uint16)0,& && &
& &CSL_MCBSP_PABLK_0,
& &CSL_MCBSP_PBBLK_1,
& &CSL_MCBSP_PABLK_0,
& &CSL_MCBSP_PBBLK_1
CSL_McbspHwSetup myHwSetup = {
& &&mcbspGbl,
& &&mcbspRxData,
& &&mcbspTxData,
& &&mcbspClock,
& &&mcbspMul,
& &CSL_MCBSP_EMU_FREERUN,
CSL_IntcContext& && && && && & intcC
CSL_IntcEventHandlerRecord& &&&EventHandler[100];
CSL_IntcObj& && && && && && &&&intcObjE
CSL_IntcHandle& && && && && &&&hIntcE
CSL_IntcGlobalEnableState& && &
CSL_IntcEventHandlerRecord& &&&EventR
CSL_IntcParam& && && && && && &vectId;
CSL_Edma3HwDmaChannelSetup& &&&dmahwSetup[CSL_EDMA3_NUM_DMACH] =CSL_EDMA3_DMACHANNELSETUP_DEFAULT;
CSL_Edma3HwSetup& && && && && &hwSetup = {&dmahwSetup[0],NULL};
CSL_Edma3Handle& & hM&&
CSL_Edma3ParamSetup gParamSetupRcvPing ={&&// PaRAM Set Structure for receive pingbuffer
& &CSL_EDMA3_OPT_MAKE& && && && && && && &// option -& &&&OPT
& && & (CSL_EDMA3_ITCCH_DIS,& & \
& && & CSL_EDMA3_TCCH_DIS,& && &\
& && & CSL_EDMA3_ITCINT_DIS,& & \
& && & CSL_EDMA3_TCINT_EN,& && &\
& && & 15, CSL_EDMA3_TCC_NORMAL, \
& && & CSL_EDMA3_FIFOWIDTH_NONE, \
& && & CSL_EDMA3_STATIC_DIS,& & \
& && & CSL_EDMA3_SYNC_A,& && &&&\
& && & CSL_EDMA3_ADDRMODE_INCR,&&\
& && & CSL_EDMA3_ADDRMODE_INCR),
& &(Uint32)0x028c0000,& && && && && && &&&// srcAddr-& & SRC
& &CSL_EDMA3_CNT_MAKE(2,BUFFSIZE),& && &&&// aCntbCnt -& &(ACNT, BCNT)
& &(Uint32)&gBufferRcvPing,& && && && && &// dstAddr-& & DST
& &CSL_EDMA3_BIDX_MAKE(0,2),& && && && &&&// srcDstBidx -&&(SRCBIDX, DSTBIDX)
& &CSL_EDMA3_LINKBCNTRLD_MAKE(0x4800, 1),&&//linkBcntrld - (LINK, BCNTRLD)
& &CSL_EDMA3_CIDX_MAKE(0,0),& && && && &&&//srcDstCidx -&&(SRCCIDX, DSTCIDX)
& &1& && && && && && && && && && && && &&&// cCnt-& && & CCNT
CSL_Edma3ParamSetup gParamSetupRcvPong ={&&// PaRAM Set Structure for receive pongbuffer
& &CSL_EDMA3_OPT_MAKE& && && && && && && &// option-& &&&OPT
& && & (CSL_EDMA3_ITCCH_DIS,& & \
& && & CSL_EDMA3_TCCH_DIS,& && &\
& && & CSL_EDMA3_ITCINT_DIS,& & \
& && & CSL_EDMA3_TCINT_EN,& && &\
& && & 15, CSL_EDMA3_TCC_NORMAL, \
& && & CSL_EDMA3_FIFOWIDTH_NONE, \
& && & CSL_EDMA3_STATIC_DIS,& & \
& && & CSL_EDMA3_SYNC_A,& && &&&\
& && & CSL_EDMA3_ADDRMODE_INCR,&&\
& && & CSL_EDMA3_ADDRMODE_INCR),
& &(Uint32)0x028c0000,& && && && && && &&&// srcAddr-& & SRC
& &CSL_EDMA3_CNT_MAKE(2,BUFFSIZE),& && &&&// aCntbCnt -& &(ACNT, BCNT)
& &(Uint32)&gBufferRcvPong,& && && && && &// dstAddr-& & DST
& &CSL_EDMA3_BIDX_MAKE(0,2),& && && && &&&// srcDstBidx -&&(SRCBIDX, DSTBIDX)
& &CSL_EDMA3_LINKBCNTRLD_MAKE(0x4820, 1),&&//linkBcntrld - (LINK, BCNTRLD)
& &CSL_EDMA3_CIDX_MAKE(0,0),& && && && &&&// srcDstCidx -&&(SRCCIDX, DSTCIDX)
& &1& && && && && && && && && && && && &&&// cCnt-& && & CCNT
void edmaInit()
& &CSL_Edma3Obj& && && && && &edmaO
& &CSL_Edma3ParamHandle& && & hParamBasic1;
& &CSL_Edma3ChannelObj& && &&&chObjXmt, chObjR
& &CSL_Edma3CmdIntr& && && &&&regionI
& &CSL_Edma3CmdDrae& && && &&&regionA
& &CSL_Edma3ChannelHandle& &&&hChannelXmt, hChannelR
& &CSL_Edma3Context& && && &&&
& &CSL_Edma3ChannelAttr& && & chAttrXmt, chAttrR
& &CSL_Status& && && && && &&&&&
& && &&&Uint32& &&&i;
& &intcContext.eventhandlerRecord = EventH
& &intcContext.numEvtEntries = 10;
& &CSL_intcInit(&intcContext);
& &CSL_intcGlobalNmiEnable();
& &CSL_intcGlobalEnable(&state);
& &vectId = CSL_INTC_VECTID_4;
& &hIntcEdma = CSL_intcOpen (&intcObjEdma,CSL_INTC_EVENTID_EDMA3CC_INT1, \
& && && && && && && && && &&&&vectId , NULL);
& &status = CSL_edma3Init(&context);
& & if(status != CSL_SOK) {
& && & printf (&Edma module initializationfailed\n&);&&
& &hModule =CSL_edma3Open(&edmaObj,CSL_EDMA3,NULL,&status);
& &regionAccess.region = CSL_EDMA3_REGION_1 ;
& &regionAccess.drae =& &0xFFFFFFFF;&&
& &regionAccess.draeh =&&0xFFFFFFFF ;
& &CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_DMAREGION_ENABLE,&regionAccess);
& &dmahwSetup[12].paramNum = 12;
& && &&&dmahwSetup[12].que=& &&&CSL_EDMA3_QUE_1;
& && &&&dmahwSetup[13].paramNum = 13;
& && &&&dmahwSetup[13].que=& &&&CSL_EDMA3_QUE_1;
& &CSL_edma3HwSetup(hModule,&hwSetup);
& &chAttrRcv.regionNum = CSL_EDMA3_REGION_1;
& &chAttrRcv.chaNum = CSL_EDMA3_CHA_REVT0;
& &hChannelRcv = CSL_edma3ChannelOpen(&chObjRcv, CSL_EDMA3,&chAttrRcv,&status);&&
& &hParamBasic1 =CSL_edma3GetParamHandle(hChannelRcv,65,NULL);& && &
& &status =CSL_edma3ParamSetup(hParamBasic1,&gParamSetupRcvPing);
& &hParamBasic1 =CSL_edma3GetParamHandle(hChannelRcv,64,NULL);
& &CSL_edma3ParamSetup(hParamBasic1,&gParamSetupRcvPong);
& &hParamBasic1 =CSL_edma3GetParamHandle(hChannelRcv,13,NULL);
& &CSL_edma3ParamSetup(hParamBasic1,&gParamSetupRcvPing);
& &CSL_edma3HwChannelSetupParam(hChannelRcv, 13);
& && &&&CSL_edma3HwChannelSetupQue(hChannelRcv,CSL_EDMA3_QUE_1);
& &EventRecord.handler = &eventEdmaH
& &EventRecord.arg = (void*)(hModule);
& &CSL_intcPlugEventHandler(hIntcEdma,&EventRecord);
& && && &&&
& &CSL_intcHwControl(hIntcEdma,CSL_INTC_CMD_EVTENABLE,NULL);
& && &&&EdmaEventHook(15, tcc1Fxn);
& &// EdmaEventHook(1,tcc1Fxn);
& &regionIntr.region = CSL_EDMA3_REGION_1 ;
& &regionIntr.intr&&= 0x;
& &regionIntr.intrh = 0x;
& &CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_INTR_ENABLE,&regionIntr);& &
& && &&&CSL_edma3HwChannelControl(hChannelRcv,CSL_EDMA3_CMD_CHANNEL_CLEAR,NULL);
& &CSL_edma3HwChannelControl(hChannelRcv,CSL_EDMA3_CMD_CHANNEL_ENABLE,NULL);
//& &&&*((Uint32*)0x1800088) = 0x;
& && && && && && &
& && &&&while(1)
& && && &&&//while (!intFlag);
& && && && && && &if (intFlag)
& && && && && && &{
& && && && && && && && && &intFlag = 0;
& && && && && && && && && &printf (&*******completion***********\n&);
& && && && && && &}
& && && &&&
void main()
& &Bool&&mcbsp1En;
& &memset((void*)gBufferXmtPing,0,sizeof(gBufferXmtPing));
& &memset((void*)gBufferXmtPong,0,sizeof(gBufferXmtPong));
& &memset((void*)gBufferRcvPing,0,sizeof(gBufferRcvPing));
& &memset((void*)gBufferRcvPong,0,sizeof(gBufferRcvPong));
& &CSL_FINST (((CSL_DevRegs*)CSL_DEV_REGS)-&PERLOCK,DEV_PERLOCK_LOCKVAL,
& && && && &&&UNLOCK);
& && && && &&&
& &CSL_FINST (((CSL_DevRegs*)CSL_DEV_REGS)-&PERCFG0,DEV_PERCFG0_MCBSP0CTL,
& && && && &&&ENABLE);
& && &&&do {
& && & mcbsp1En = (Bool)CSL_FEXT(((CSL_DevRegs*)CSL_DEV_REGS)-&PERSTAT0,
& && && && && && && && && && && & DEV_PERSTAT0_MCBSP0STAT);
& & }while (mcbsp1En != TRUE);
& &printf(&Powersaver for MCBSP 1 is enabled\n&);
& && &&&init_McBSP0();
& && &&&edmaInit();
void tcc1Fxn(void)
& &intFlag = 1;
void init_McBSP0(void)
& && & CSL_Status& && && & status = CSL_SOK;
& &CSL_McbspContext& & pC
& &CSL_McbspObj& && &&&mcbspO
& &//Uint16& && && && &&&loopI
& &CSL_BitMask16& && & ctrlM
& &//CSL_BitMask16& && &
& &CSL_McbspHwSetup& & readHwS
& &//Uint16& && && && &&&maxTimeout = 1000;
& &//Uint16& && && && &&&timeout& & =0;
& &//Uint16& && && && &&&errCount& &= 0;
& &CSL_McbspGlobalSetup globalS
& &CSL_McbspDataSetup&&rxDataS
& &CSL_McbspDataSetup&&txDataS
& &CSL_McbspClkSetup& &clkS
& &memset (&readHwSetup, 0, sizeof(CSL_McbspHwSetup));
& &memset (&mcbspObj, 0, sizeof(CSL_McbspObj));
& &readHwSetup.global = &globalS
& &readHwSetup.rxdataset = &rxDataS
& &readHwSetup.txdataset = &txDataS
& &readHwSetup.clkset = &clkS
& &printf(&\n***singleChannelTransmission***\n&);
& &status = CSL_mcbspInit(&pContext);
& & if(status != CSL_SOK) {
& && & printf(&Mcbsp initialization failed\n&);
& &hMcbsp = CSL_mcbspOpen (&mcbspObj, CSL_MCBSP_0, NULL,&status);
& & if((hMcbsp == NULL) || (status != CSL_SOK)) {
& && & printf (&MCBSP: Opening instance... Failed.\n&);
& && & printf (&\tReason: Error opening the instance. \
& && && && && &[status = 0x%x, hMcbsp = 0x%x]\n&, status, hMcbsp);
& && & exit(1);
& &ctrlMask = CSL_MCBSP_CTRL_RX_DISABLE
& && && && &&&| CSL_MCBSP_CTRL_TX_DISABLE
& && && && &&&| CSL_MCBSP_CTRL_FSYNC_DISABLE
& && && && &&&| CSL_MCBSP_CTRL_SRG_DISABLE;
& &CSL_mcbspHwControl (hMcbsp, CSL_MCBSP_CMD_RESET_CONTROL,&ctrlMask);
& &status= CSL_mcbspHwSetup (hMcbsp , &myHwSetup);
& & if(status != CSL_SOK){
& && & printf (&MCBSP: Hardware setup... Failed.\n&);
& && & exit(1);
& &status = CSL_mcbspGetHwSetup (hMcbsp ,&readHwSetup);
& & if(status != CSL_SOK){
& && & printf (&MCBSP: Get Hardware setup... Failed.\n&);
& && & exit(1);
& &status = hwSetupVerify (&myHwSetup,&readHwSetup);
& & if(status != CSL_SOK){
& && & printf (&MCBSP: Hardware setup and Read Hardware setup parameter&);
& && & printf (&comparision ... Failed.\n&);
& && & exit(1);
& &ctrlMask = CSL_MCBSP_CTRL_SRG_ENABLE |CSL_MCBSP_CTRL_FSYNC_ENABLE;
& &CSL_mcbspHwControl(hMcbsp, CSL_MCBSP_CMD_RESET_CONTROL,&ctrlMask);
& &WAIT_FOR_2_CLK;
& &// ctrlMask =CSL_MCBSP_CTRL_TX_ENABLE | CSL_MCBSP_CTRL_RX_ENABLE;
& && &&&ctrlMask = CSL_MCBSP_CTRL_RX_ENABLE;
& &CSL_mcbspHwControl(hMcbsp, CSL_MCBSP_CMD_RESET_CONTROL,&ctrlMask);
& &WAIT_FOR_2_CLK;& && &
CSL_Status hwSetupVerify (
& &&&CSL_McbspHwSetup& &*hwSetup,
& &&&CSL_McbspHwSetup& &*hwSetupRead
& &CSL_Status& &status = CSL_SOK;
& & if(hwSetupRead-&global != NULL) {
& && & if(!((hwSetup-&global-&dlbMode ==hwSetupRead-&global-&dlbMode)
& && && &&&&&(hwSetup-&global-&clkStopMode == \
& && && && && && && && && && && && && && &&&hwSetupRead-&global-&clkStopMode)
& && && &&&&&(hwSetup-&global-&ioEnableMode== \
& && && && && && && && && && && && && &hwSetupRead-&global-&ioEnableMode))) {
& && && &&&status = CSL_ESYS_FAIL;
& & if(hwSetupRead-&rxdataset != NULL) {
& && & if (!((hwSetup-&rxdataset-&numPhases == \
& && && && && && && && && && && && && && &hwSetupRead-&rxdataset-&numPhases)
& && && &&&&&(hwSetup-&rxdataset-&wordLength1 == \
& && && && && && && && && && && && && &hwSetupRead-&rxdataset-&wordLength1)
& && && &&&&&(hwSetup-&rxdataset-&wordLength2 == \
& && && && && && && && && && && && && &hwSetupRead-&rxdataset-&wordLength2)
& && && &&&&&(hwSetup-&rxdataset-&frmLength1 == \
& && && && && && && && && && && && && &hwSetupRead-&rxdataset-&frmLength1)
& && && &&&&&(hwSetup-&rxdataset-&frmSyncIgn == \
& && && && && && && && && && && && && &hwSetupRead-&rxdataset-&frmSyncIgn)
& && && &&&&&(hwSetup-&rxdataset-&compand == \
& && && && && && && && && && && && && &hwSetupRead-&rxdataset-&compand)
& && && &&&&& (hwSetup-&rxdataset-&dataDelay == \
& && && && && && && && && && && && && &hwSetupRead-&rxdataset-&dataDelay)
& && && &&&&&(hwSetup-&rxdataset-&rjust_dxenable == \
& && && && && && && && && && && && && &hwSetupRead-&rxdataset-&rjust_dxenable)
& && && &&&&&(hwSetup-&rxdataset-&intEvent == \
& && && && && && && && && && && && && &hwSetupRead-&rxdataset-&intEvent)
& && && &&&&&(hwSetup-&rxdataset-&wordReverse == \
& && && && && && && && && && && && &&&hwSetupRead-&rxdataset-&wordReverse))) {
& && && && &&&
& && && &&&status = CSL_ESYS_FAIL;
& & if(hwSetupRead-&txdataset != NULL) {
& && & if (!((hwSetup-&txdataset-&numPhases == \
& && && && && && && && && && && && && &hwSetupRead-&txdataset-&numPhases)
& && && &&&&&(hwSetup-&txdataset-&wordLength1 == \
& && && && && && && && && && && && && &hwSetupRead-&txdataset-&wordLength1)
& && && &&&&&(hwSetup-&txdataset-&wordLength2 == \
& && && && && && && && && && && && && &hwSetupRead-&txdataset-&wordLength2)
& && && &&&&&(hwSetup-&txdataset-&frmLength1 == \
& && && && && && && && && && && && && &hwSetupRead-&txdataset-&frmLength1)
& && && &&&&&(hwSetup-&txdataset-&frmSyncIgn == \
& && && && && && && && && && && && && &hwSetupRead-&txdataset-&frmSyncIgn)
& && && &&&&&(hwSetup-&txdataset-&compand == \
& && && && && && && && && && && && && &hwSetupRead-&txdataset-&compand)
& && && &&&&&(hwSetup-&txdataset-&dataDelay == \
& && && && && && && && && && && && && &hwSetupRead-&txdataset-&dataDelay)
& && && &&&&&(hwSetup-&txdataset-&rjust_dxenable == \
& && && && && && && && && && && && && &hwSetupRead-&txdataset-&rjust_dxenable)
& && && &&&&&(hwSetup-&txdataset-&intEvent == \
& && && && && && && && && && && && && &hwSetupRead-&txdataset-&intEvent)
& && && &&&&&(hwSetup-&txdataset-&wordReverse == \
& && && && && && && && && && && && &&&hwSetupRead-&txdataset-&wordReverse))) {
& && && &&&status = CSL_ESYS_FAIL;
& & if(hwSetupRead-&clkset != NULL) {
& && & if (!((hwSetup-&clkset-&frmSyncRxMode == \
& && && && && && && && && && && && && &hwSetupRead-&clkset-&frmSyncRxMode)
& && && &&&&&(hwSetup-&clkset-&frmSyncTxMode == \
& && && && && && && && && && && && && &hwSetupRead-&clkset-&frmSyncTxMode)
& && && &&&&&(hwSetup-&clkset-&frmSyncRxPolarity == \
& && && && && && && && && && && && && &hwSetupRead-&clkset-&frmSyncRxPolarity)
& && && &&&&&(hwSetup-&clkset-&frmSyncTxPolarity == \
& && && && && && && && && && && && && &hwSetupRead-&clkset-&frmSyncTxPolarity)
& && && &&&&&(hwSetup-&clkset-&clkRxMode == \
& && && && && && && && && && && && && &hwSetupRead-&clkset-&clkRxMode)
& && && &&&&&(hwSetup-&clkset-&clkTxMode == \
& && && && && && && && && && && && && &hwSetupRead-&clkset-&clkTxMode)
& && && &&&&&(hwSetup-&clkset-&clkRxPolarity == \
& && && && && && && && && && && &&&hwSetupRead-&clkset-&clkRxPolarity)
& && && &&&&&(hwSetup-&clkset-&clkTxPolarity == \
& && && && && && && && && && && &&&hwSetupRead-&clkset-&clkTxPolarity)
& && && &&&&&(hwSetup-&clkset-&srgFrmPulseWidth == \
& && && && && && && && && && && &&&hwSetupRead-&clkset-&srgFrmPulseWidth)
& && && &&&&&(hwSetup-&clkset-&srgFrmPeriod == \
& && && && && && && && && && && &&&hwSetupRead-&clkset-&srgFrmPeriod)
& && && &&&&&(hwSetup-&clkset-&srgClkDivide == \
& && && && && && && && && && && &&&hwSetupRead-&clkset-&srgClkDivide)
& && && &&&&&(hwSetup-&clkset-&srgClkSync == \
& && && && && && && && && && && &&&hwSetupRead-&clkset-&srgClkSync)
& && && &&&&&(hwSetup-&clkset-&srgInputClkMode == \
& && && && && && && && && && && &&&hwSetupRead-&clkset-&srgInputClkMode)
& && && &&&&&(hwSetup-&clkset-&srgClkPolarity == \
& && && && && && && && && && && &&&hwSetupRead-&clkset-&srgClkPolarity)
& && && &&&&&(hwSetup-&clkset-&srgTxFrmSyncMode == \
& && && && && && && && && && && &&&hwSetupRead-&clkset-&srgTxFrmSyncMode))) {
& && && &&&
& && && &&&status = CSL_ESYS_FAIL;
& &if(!((hwSetup-&emumode == hwSetupRead-&emumode )&&
& && & (hwSetup-&extendSetup == hwSetupRead-&extendSetup))){
& && & status = CSL_ESYS_FAIL;
第二个文件内容
#pragmaDATA_SECTION(TccHandlerTable,&.testMem&);
EdmaTccHandler TccHandlerTable[64];
void eventEdmaHandler (
& &void& && & *handle
& &CSL_Edma3Handle& & hModule = (CSL_Edma3Handle)
& &CSL_BitMask32& && &maskV
& &CSL_Edma3CmdIntr& &regionI
& &Uint32& && && && &
& &Uint32& && && && &
& &Uint32& && && && &
//& &&&Uint32 *
//& &&&Uint32 *
& & //a = (Uint32 *)0x02A01008;
//& &&&b = (Uint32 *)0x02A01068;
& &regionIntr.region = CSL_EDMA3_REGION_1;
& &CSL_edma3GetHwStatus(hModule,CSL_EDMA3_QUERY_INTRPEND,&regionIntr);
& &while (regionIntr.intr || regionIntr.intrh) {
& && & intr& & =regionIntr.
& && & intrh = regionIntr.
& && & tcc& &= 0;
& && & while (intr) {
& && && &&&maskVal = 1 &&
& && && &&&if (intr & maskVal) {
& && && && && &InvokeHandle(tcc);
& && && && && &intr&= ~maskV
& && && &&&}
& && && &&&tcc++;& &&&
& && & }& && &
& && & tcc = 0;
& && & while (intrh) {
& && && &&&maskVal = 1 &&
& && && &&&if (intrh & maskVal) {
& && && && && &InvokeHandle((tcc+32));
& && && && && &intrh&= ~maskV
& && && &&&}& && &
& && && &&&tcc++;
& && & //intFlag = 0;
& && & CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_INTRPEND_CLEAR,&regionIntr);
void EdmaEventHook (
& &Uint16& && && &&&tcc,
& &EdmaTccHandler& &fxn
& &TccHandlerTable[tcc] = (fxn);
Bool Verify_Transfer (
& &Uint16& &&&aCnt,
& &Uint16& &&&bCnt,
& &Uint16& &&&cCnt,
& &Uint16& &&&srcBIdx,
& &Uint16& &&&dstBIdx,
& &Uint16& &&&srcCIdx,
& &Uint16& &&&dstCIdx,
& &Uint8& &&&*srcBuff,
& &Uint8& &&&*dstBuff,
& &Bool& && & abSync
& &Uint32& &&&loopIndex1;
& &Uint32& &&&loopIndex2;
& &Uint32& &&&loopIndex3;
& &Uint8& && &*srcArrayPtr = srcB
& &//unsigned int&&*srcArrayPtr = srcB
& &Uint8& && &*dstArrayPtr = dstB
& &Uint8& && &*srcFramePtr = srcB
& &// unsignedint& &*srcFramePtr = srcB
& &Uint8& && &*dstFramePtr = dstB
& & for(loopIndex1 = 0; loopIndex1 & cC loopIndex1++)
& && & for (loopIndex2 = 0; loopIndex2 & bC loopIndex2++)
& && && &&&for (loopIndex3 = 0; loopIndex3 & aC loopIndex3++)
& && && && && &if (srcArrayPtr[loopIndex3] != dstArrayPtr[loopIndex3])
& && && && && && & return FALSE;
& && && &&&srcArrayPtr = srcArrayPtr + srcBI
& && && &&&dstArrayPtr = dstArrayPtr + dstBI
& && & if (abSync) {
& && && &&&srcFramePtr = srcFramePtr + srcCI
& && && &&&srcArrayPtr = srcFrameP
& && && &&&dstFramePtr = dstFramePtr + dstCI
& && && &&&dstArrayPtr = dstFrameP
& && & else {&&
& && && &&&srcFramePtr = srcArrayPtr + srcCIdx - srcBI
& && && &&&srcArrayPtr = srcFrameP
& && && &&&dstFramePtr = dstArrayPtr + dstCIdx - dstBI
& && && &&&dstArrayPtr =dstFrameP& &&&
& && & }& && &
& &return TRUE;
Verilog程序,en产生一个上升沿就会产生一次数据,reset高电平复位,程序初始化时要有个复位信号。Temp信号没有什么用处,用于测试,clk_out是mcbsp的时钟,sync为frame信号,data为数据信号。
module REV_McBSP(clk,en,reset,clk_out,sync,data,temp);// 用于产生测试McBSP接收信号
input clk,en,
output clk_out,sync,
output[7:0]
assign clk_out =
reg[7:0] counter,counter1,
reg[79:0] data_
always @(posedge clk)
& && &&&if (reset)
& && &&&begin
& && && && && && &counter &= 0;
& && && && && && &data &= 0;
& && && && && && &data_send &= 80'haa;
& && && && && && &counter1 &= 0;
& && && && && && &over_flag &= 1;
& && &&&end
& && &&&else
& && &&&begin
& && && && && && &if (en_flag)
& && && && && && &begin
& && && && && && && && && &over_flag &= 0;
& && && && && && &end
& && && && && && &
& && && && && && &if (counter & 1 && counter1 & 10 &&!over_flag)
& && && && && && &begin
& && && && && && && && && &sync &=1;& && && && && && && && && &
& && && && && && && && && &counter &= counter + 1;
& && && && && && &end
& && && && && && &
& && && && && && &else if (counter & 8 && counter1 & 10 &&!over_flag)
& && && && && && &begin
& && && && && && && && && &sync &= 0;
& && && && && && && && && &temp = counter1*8 + counter - 1;
& && && && && && && && && &data &= data_send[temp];
& && && && && && && && && &counter &= counter + 1;
& && && && && && &end
& && && && && && &else if (counter &= 8 && counter1 & 10 &&!over_flag)
& && && && && && &begin
& && && && && && && && && &temp = counter1*8 + counter - 1;
& && && && && && && && && &data &= data_send[temp];
& && && && && && && && && &counter &= 0;
& && && && && && && && && &counter1 &= counter1 + 1;
& && && && && && && && && &//data &= 0;
& && && && && && &end
& && && && && && &else if (counter1 &= 10 && !over_flag)
& && && && && && &begin
& && && && && && && && && &counter1 &= 0;
& && && && && && && && && &over_flag &= 1;
& && && && && && &end
& && &&&end
reg start_
reg[2:0] count2;
always @(posedge clk)&&//当wr_en产生一个上升沿时,产生一个持续时间为3个sck时钟周期的高脉冲。
& && &&&if(reset)
& && &&&begin
& && && && && && &start_flag &= 1;
& && && && && && &count2 &= 3'd0;
& && && && && && &en_flag &= 0;
& && &&&end
& && &&&else
& && &&&begin
& && && && && && &if (en)
& && && && && && &begin
& && && && && && && && && &if (start_flag)
& && && && && && && && && &begin
& && && && && && && && && && && && &if (count2 &= 2)
& && && && && && && && && && && && &begin
& && && && && && && && && && && && && && && & en_flag &= 1;
& && && && && && && && && && && && && && && & count2 &= count2 + 3'd1;
& && && && && && && && && && && && &end
& && && && && && && && && && && && &else
& && && && && && && && && && && && &begin
& && && && && && && && && && && && && && && & count2 &= 3'd0;
& && && && && && && && && && && && && && && & en_flag &= 0;
& && && && && && && && && && && && && && && & start_flag &= 0;
& && && && && && && && && && && && &end
& && && && && && && && && &end& && && &&&
& && && && && && &end
& && && && && && &else
& && && && && && &begin
& && && && && && && && && &start_flag &= 1;
& && && && && && && && && &en_flag &= 0;
& && && && && && &end
& && &&&end
Powered by}

我要回帖

更多关于 济南6455工厂怎么样 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信