i2cregin.tdf

来自「基于fpga的屏幕测试程序」· TDF 代码 · 共 61 行

TDF
61
字号
INCLUDE "I2CREGIN";PARAMETERS   (   SUBADDRESS=0,   SUBADDRESSBITS=8,   INBITS=8   );CONSTANT I2CBUSWIDTH = SUBADDRESSBITS+20;SUBDESIGN i2cRegIn   (   i2cBusIn[I2CBUSWIDTH-1..0]: INPUT;   i2cBusOut[I2CBUSWIDTH-1..0]: OUTPUT;   in[INBITS-1..0]: INPUT;   )VARIABLE   IF (INBITS>8) GENERATE      highI2cInReg: i2cRegIn WITH (SUBADDRESS=SUBADDRESS+1,SUBADDRESSBITS=SUBADDRESSBITS,INBITS=INBITS-8);      lowI2cInReg:  i2cRegIn WITH (SUBADDRESS=SUBADDRESS  ,SUBADDRESSBITS=SUBADDRESSBITS,INBITS=8);   END GENERATE;   IF (INBITS<=8) GENERATE      reg[INBITS-1..0]: DFF;      add[SUBADDRESSBITS-1..0]: NODE;      clk,rd: NODE;      sel: SOFT;   END GENERATE;BEGINIF (INBITS>8) GENERATE   lowI2CInReg.i2cBusIn[]=i2cBusIn[];   highI2CInReg.i2cBusIn[]=lowI2CInReg.i2cBusOut[];      i2cBusOut[]=highI2CinReg.i2cBusOut[];   lowI2CinReg.in[]=in[7..0];   highI2CinReg.in[]=in[INBITS-1..8];END GENERATE;IF (INBITS<=8) GENERATE   clk=i2cBusIn[0];   rd=i2cBusIn[2];   add[]=i2cBusIn[I2CBUSWIDTH-1..20];   sel=(rd & add[]==SUBADDRESS);   reg[].clk=clk;   reg[].d=in[];   IF (INBITS<8) GENERATE      i2cBusOut[19..12]=i2cBusIn[19..12] & ((0,reg[]) # !sel);   END GENERATE;   IF (INBITS==8) GENERATE      i2cBusOut[19..12]=i2cBusIn[19..12] & (reg[] # !sel);   END GENERATE;   i2cBusOut[11..0]=i2cBusIn[11..0];   i2cBusOut[I2CBUSWIDTH-1..20]=i2cBusIn[I2CBUSWIDTH-1..20];END GENERATE;END;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?