文章发表于:2009-07-11 22:52
cy7c68013-56在使用Slave fifo进行数据传输的时候,EP2,EP4作为OUT端点,EP6,EP8作为IN端点。所以这些寄存器一定要搞懂:
PINFLAGSAB,PINFLAGSCD.
我们一般要用到FLAGA,FLAGB,FLAGC,FLAGD几个引脚,用于得到端点的状态,PINFLAGSAB,PINFLAGSCD是一组寄存器,用于设置这四个引脚的功能。PINFLAGSAB为例:
PINFLAGSAB = 0xe8; // FLAGA - fixed EP2EF, FLAGB - fixed EP6FF
SYNCDELAY; //FLAGA引脚,EP2空时为0,非空为1,FLAGB引脚,EP6满为0,非满为1
PINFLAGSCD = 0xac; // FLAGC - fixed EP2FF, FLAGD - fixed EP6EF
SYNCDELAY; //FLAGC引脚,EP2满时为0,非空为1,FLAGD引脚,EP6空为0,非满为1
FIFORESET是用于FIFO状态复位的。这个用下面这段就OK了。
FIFORESET = 0x80; // activate NAK-ALL to avoid race conditions
SYNCDELAY; // see TRM section 15.14
FIFORESET = 0x02; // reset, FIFO 2
SYNCDELAY; //
FIFORESET = 0x04; // reset, FIFO 4
SYNCDELAY; //
FIFORESET = 0x06; // reset, FIFO 6
SYNCDELAY; //
FIFORESET = 0x08; // reset, FIFO 8
SYNCDELAY; //
FIFORESET = 0x00; // deactivate NAK-ALL
SYNCDELAY; //
EPxFIFOCFG,用于设置端点的操作方式。
EP2FIFOCFG = 0x11; // AUTOOUT="1", WORDWIDE="1"
SYNCDELAY; //自动输出端点,8位数据总线
EP4FIFOCFG = 0x11; // AUTOOUT="1", WORDWIDE="1"
SYNCDELAY; //自动输出端点,8位数据总线
EP6FIFOCFG = 0x0c; // AUTOIN="1", ZEROLENIN="1", WORDWIDE="1"
SYNCDELAY; //自动输入端点,允许0长度端点,8位数据总线
EP8FIFOCFG = 0x0c; // AUTOIN="1", ZEROLENIN="1", WORDWIDE="1"
SYNCDELAY; //自动输入端点,允许0长度端点,8位数据总线
OK,这就行了,在FPGA里面编你的Verilog程序这份很有前途的职业去吧。
用户427238 2014-11-4 00:54
用户427238 2014-11-4 00:51
用户1251359 2010-7-7 16:25
用户68682 2007-1-14 18:04