📄 isp1581.tdf
字号:
--FUNCTION 74244 (1gn, 1a[1..4], 2gn, 2a[1..4])
--RETURNS (1y[1..4], 2y[1..4]);
--FUNCTION counter16 (clock,clk_en,cnt_en,aclr,aload,aset,data[15..0])
--RETURNS (q[15..0]);
FUNCTION counter8 (clock,clk_en,cnt_en,cin,aclr,aload,data[7..0])
RETURNS (q[7..0],cout);
FUNCTION tri8 (data[7..0],enabledt)
RETURNS (tridata[7..0]);
SUBDESIGN isp1581
(
clk :INPUT;
---------------------------------
d[7..0] :INPUT;
rdn,wrn,ale,aa[15..8] :INPUT;
cpld_csn :INPUT;
----------------------------------
int1n :OUTPUT;
data[7..0] :BIDIR;
--test[7..0] :OUTPUT;
a[16..0],m_rdn,m_wrn,m_csn :OUTPUT;
--------------------------------
dreq :INPUT;
diow,dior,dack :OUTPUT;
eot :OUTPUT;
iordy :INPUT;
--------------------------------
ext_wrn,ext_rdn,ext_csn :OUTPUT;
res[2..0] :INPUT;
----------------------------------------
ispd[7..0] :BIDIR;
)
VARIABLE
addr[2..0] :dffe;
--dma_cnt[15..0] :dffe;
--dma_addr[15..0]:dffe;
ctl_reg[1..0] :dffe;
diowtff :tffe;
--ncs_regc_dmactl,ncs_regc_cntlow,ncs_regc_cnthigh,ncs_regc_addrlow,ncs_regc_addrhigh :node;
ncs_regc_dmactl,ncs_regc_addrlow,ncs_regc_addrhigh :node;
--databuf :74244;
address_cnt_low,address_cnt_high :counter8;
BEGIN
--d[7..0]='zzzzzzzz';
ncs_regc_dmactl=addr[2] or addr[1] or !addr[0] or cpld_csn;
--ncs_regc_cntlow=addr[2] or !addr[1] or addr[0] or cpld_csn;
--ncs_regc_cnthigh=addr[2] or !addr[1] or !addr[0] or cpld_csn;
ncs_regc_addrlow=!addr[2] or addr[1] or addr[0] or cpld_csn or wrn;
ncs_regc_addrhigh=!addr[2] or addr[1] or !addr[0] or cpld_csn or wrn;
-----------------------
addr[2..0].d=d[2..0];
addr[2..0].clk=!ale;
addr[2..0].clrn=!cpld_csn;
addr[2..0].prn=vcc;
addr[2..0].ena=!cpld_csn;
address_cnt_low.clock=!diowtff.q;
address_cnt_low.clk_en=ctl_reg[0];
address_cnt_low.cnt_en=vcc;
address_cnt_low.aclr=gnd;--!ctl_reg[0];
address_cnt_low.data[7..0]=d[7..0];
address_cnt_low.aload=!ncs_regc_addrlow;
address_cnt_low.cin=vcc;
address_cnt_high.clock=!diowtff.q;
address_cnt_high.clk_en=ctl_reg[0];
address_cnt_high.cnt_en=vcc;
address_cnt_high.aclr=gnd;
address_cnt_high.data[7..0]=d[7..0];
address_cnt_high.aload=!ncs_regc_addrhigh;
address_cnt_high.cin=address_cnt_low.cout;
a[16]=gnd;
a[15..8]=address_cnt_high.q[7..0];
a[7..0]=address_cnt_low.q[7..0];
--a[0]=vcc;
-----------------------------
-- |-|-|-|-|-|-|dir|trig|
ctl_reg[1..0].d=d[1..0];
ctl_reg[1..0].clk=wrn;
ctl_reg[1..0].clrn=vcc;
ctl_reg[1..0].prn=vcc;
ctl_reg[1..0].ena=!ncs_regc_dmactl;
-----------------------
--data[7..0]="ZZZZZZZZ";
int1n=vcc;
--a[16..0]=B"11111111111111111";
--a[15..0]=;
m_rdn=!diowtff.q or !ctl_reg[1];
m_wrn=!diowtff.q or ctl_reg[1];
m_csn=!dreq or !ctl_reg[0];
--m_rdn=!ctl_reg[1];
--m_wrn=ctl_reg[1];
--m_csn=!diowtff.q or !ctl_reg[0];--!dreq or !ctl_reg[0];
------------------------
diowtff.t=vcc;
diowtff.clrn=ctl_reg[0] and dreq;
diowtff.prn=vcc;
diowtff.ena=dreq and ctl_reg[0];
diowtff.clk=global(clk);
diow=!diowtff.q or !ctl_reg[1];
dior=!diowtff.q or ctl_reg[1];
dack=!dreq or !ctl_reg[0];
--if dreq and ctl_reg[0] and ctl_reg[1] then --Write
--dack=gnd;
--data[7..0]=B"01111000";
--dior=vcc;
--diow=diowtff.q;
--elsif dreq and ctl_reg[0] and !ctl_reg[1] then --Read
--dack=gnd;
--data[7..0]=B"01111000";
--diow=vcc;
--dior=vcc;
--else
--dack=vcc;
--data[7..0]=B"01111000";
--diow=vcc;
--dior=vcc;
--end if;
--databuf.1gn=!dreq or !diowtff.q or !ctl_reg[1];
--databuf.1a[1..4]=B"1111";
--databuf.2gn=!dreq or !diowtff.q or !ctl_reg[1];
--databuf.2a[1..4]=B"1101";
--data[3..0]=databuf.1y[1..4];
--data[7..4]=databuf.2y[1..4];
eot=gnd;
--dack=vcc;
------------------------
data[7..0]=tri8(ispd[7..0],!ctl_reg[1] and dreq);
ispd[7..0]=tri8(data[7..0],ctl_reg[1] and dreq);
--test[7..0]=tri8(ispd[7..0],!ctl_reg[1] and dreq);
ext_wrn=vcc;
ext_rdn=vcc;
ext_csn=vcc;
END;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -