📄 i2cregin.tdf
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -