📄 i2creginout.tdf
字号:
INCLUDE "i2cRegInOut";INCLUDE "posedge";PARAMETERS ( SUBADDRESS=0, SUBADDRESSBITS=8, INOUTBITS=8 );CONSTANT I2CBUSWIDTH = SUBADDRESSBITS+20;SUBDESIGN i2cRegInOut ( i2cBusIn[I2CBUSWIDTH-1..0]: INPUT; i2cBusOut[I2CBUSWIDTH-1..0]: OUTPUT; in[INOUTBITS-1..0]: INPUT; out[INOUTBITS-1..0]: OUTPUT; read: OUTPUT; write: OUTPUT; )VARIABLE IF (INOUTBITS>8) GENERATE highI2cOutReg: i2cRegInOut WITH (SUBADDRESS=SUBADDRESS+1,SUBADDRESSBITS=SUBADDRESSBITS,INOUTBITS=INOUTBITS-8); lowI2cOutReg: i2cRgeInOut WITH (SUBADDRESS=SUBADDRESS ,SUBADDRESSBITS=SUBADDRESSBITS,INOUTBITS=8); END GENERATE; IF (INOUTBITS<=8) GENERATE regOut[INOUTBITS-1..0]: DFFE; regIn[INOUTBITS-1..0]: DFFE; add[SUBADDRESSBITS-1..0]: NODE; dat[INOUTBITS-1..0]: NODE; clk,wr,rd: NODE; sel: SOFT; END GENERATE;BEGINIF (INOUTBITS>8) GENERATE lowI2CInOutReg.i2cBusIn[]=i2cBusIn[]; highI2CInOutReg.i2cBusIn[]=lowI2CInOutReg.i2cBusOut[]; i2cBusOut[]=highI2CInOutReg.i2cBusOut[]; out[]=(highI2CInOutReg.out[],lowI2CInOutReg.out[]); highI2CInOutReg.in[]=in[INOUTBITS-1..8]; lowI2CInOutReg.in[]=in[7..0]; IF used(read) GENERATE read=highI2COutReg.read; END GENERATE; read=highI2COutReg.read; IF used(write) GENERATE write=highI2COutReg.write; END GENERATE;END GENERATE;IF (INOUTBITS<=8) GENERATE clk=i2cBusIn[0]; wr=i2cBusIn[1]; rd=i2cBusIn[2]; add[]=i2cBusIn[I2CBUSWIDTH-1..20]; dat[]=i2cBusIn[INOUTBITS+3..4]; sel=(rd # wr) & add[]==SUBADDRESS; regOut[].clk=clk; out[]=regOut[].q; regOut[].ena=sel & wr; regOut[].d=dat[]; regIn[].clk=clk; regIn[].ena=sel & rd; regIn[].d=in[]; IF (INOUTBITS<8) GENERATE i2cBusOut[19..12]=i2cBusIn[19..12] & ((0,regIn[]) # !sel # !rd); END GENERATE; IF (INOUTBITS==8) GENERATE i2cBusOut[19..12]=i2cBusIn[19..12] & (regIn[] # !sel # !rd); END GENERATE; i2cBusOut[11..0]=i2cBusIn[11..0]; i2cBusOut[I2CBUSWIDTH-1..20]=i2cBusIn[I2CBUSWIDTH-1..20]; IF used(write) GENERATE write=posEdge(.clk=clk, .in=!(sel & wr)); END GENERATE; IF used(read) GENERATE read=posEdge(.clk=clk, .in=!(sel & rd)); END GENERATE;END GENERATE;END;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -