1、begin if (en)Dout= Din ; else Dout = 8bzzzzzzzz; end endmoduletimescale 1 ps/ 1 psmodule tri_74244_vlg_tst();reg eachvec;reg 7:reg en;wire 7:0 Dout;tri74244.vttri_74244 i1 ( .Din(Din), .Dout(Dout), .en(en);integer i;initial i=0; Din=8b00000000; en=0; en=1; #30 en=0; #40 en=1;end for(i=0;i10;i=i+1) b
2、egin #10 Din=i;endmoduletri74244功能仿真(2)ALUALU.bdfmodolue_74181 使用quartus库中的74181模块转换为verilog文件即可de2_4de2_4.vmodule de2_4(en,in,out); input 2:1 in ; input en; output 4:1 out ; reg 4: always (en or in) if (en) case (in) 2b00:out=4b0001;b01:b0010;b10:b0100;b11:b1000; default:b0000; endcase else out=4de
3、2_4.vttimescale 1 ns/ 1 psmodule de2_4_vlg_tst();reg 2:1 in;wire 4:1 out;de2_4 i1 ( .en(en), .in(in), .out(out)en=0;end# 10 en=1;# 5 in=2b00;#15 in=2b01;b10;b11;#40 $finish;initial$monitor($time,en=%b in=%b out=%b,en,in,out);reg8reg8.vmodule reg8 ( T3,DOUT ,D ); input T3 ; wire T3 ;0 D ;0 DOUT ;alwa
4、ys ( posedge T3 ) DOUT = D ; endmodule reg8.vtmodule reg8_vlg_tst();0 D;reg T3;0 DOUT;reg8 i1 ( .D(D), .DOUT(DOUT), .T3(T3)begin T3=0; D=8d0;always #5 T3= T3;11;i=i+1) begin #10 D=i;mux4_1mux4_1.vmodule mux4_1( d1, d2, d3, d4, se1, se2, dout );0d1;0d2;0d3;0d4; input se1; input se2; output dout;0dout
5、; always (d1 or d2 or d3 or d4 or se1 or se2) case(se2,se1)b00 : dout=d1;b01 : dout=d2;b10 : dout=d3;b11 : dout=d4;mux4_1.vtmodule mux4_1_vlg_tst();0 d1;0 d2;0 d3;0 d4;reg se1;reg se2;0 dout;mux4_1 i1 ( .d1(d1), .d2(d2), .d3(d3), .d4(d4), .dout(dout), .se1(se1), .se2(se2)integer i,j; #10 d1=8b000000
6、01; d2=8b00000010; d3=8b00000011; d4=8b00000100;#5 while(1) 2; for(j=0;jj=j+1) #5 se2=i; se1=j;ALU逻辑电路图逻辑功能表(1)写寄存器(例如:向通用寄存器R0-R3分别写入数据55H/AAH/03H/04H)T 3RDDRWSBUSABUSDBUS7.0功能(写R)0 0155H55HR00 1AAHAAHR11 003H03HR21 104H04HR3(2)选择将R0送74181的A端口,R1送B端口,进行算术功能验算MCnS3.0RS0 00000001550001ff111154(3)选择将R
7、0送74181的A端口,R1送B端口,进行逻辑功能验算1 AA当A=55H,B=AAH,S=00001111,M=0,CIN=1时仿真测试文件及功能仿真波形module alu_vlg_tst();reg SBUS;reg DRW;reg ABUS;reg LDC;reg CIN;reg M;reg 1:0 RD;0 RS;reg 3:0 S;0 SD;0 DBUS;wire C;alu i1 ( .ABUS(ABUS), .C(C), .CIN(CIN), .DBUS(DBUS), .DRW(DRW), .LDC(LDC), .M(M), .RD(RD), .RS(RS), .S(S), .
8、SBUS(SBUS), .SD(SD), SBUS=1; DRW=1; ABUS=0; RD=2 SD=8b01010101;#10 RD=2b10101010; RS=2 SBUS=0; DRW=0; ABUS=1; CIN=1; LDC=1; M=0; always #5 T3=T3; end #40 S=4 for(i=1;16; #10 S=i; initial M=%b S=%b CIN=%b SD=%h DBUS=%h C=%b,M,S,CIN,SD,DBUS,C);指令ADD R0,R1( R0+R1 R0)的仿真测试文件及功能仿真波形fork b00000111; #10 RD
9、=2 #10 SD=8#20 RD=2 #20 RS=2 #20 SBUS=0; #20 DRW=0; #20 ABUS=1; #20 CIN=1; #20 LDC=1; #20 M=0; #20 S=4b1001;#30 RD=2 #30 DRW=1; #40 DRW=0;join 00ns DBUS=07H T3上升沿到来(5ns时)数据07H被写R010ns DBUS=01H T3上升沿到来(15ns时)数据01H被写R120ns DBUS= R0+R1=07+01=08H30ns T3上升沿到来(35ns)时DBUS数据08H被写R0,因此DBUS=R0+R1=08H+01H=09H(
10、说明实现了R0+R1 R0)注意:此时M=0, S=1001,CIN=1(相当于C0=0),实现算术运算A+B指令SUB R0,R1( R0-R1 R0)的仿真测试文件及功能仿真波形 #20 RD=2 #20 CIN=0;b0110; #30 RD=200ns DBUS=03H T3上升沿到来(5ns时)数据07H被写R020ns DBUS= R0-R1=07-01=06H30ns T3上升沿到来(35ns)时DBUS数据06H被写R0,因此DBUS=R0-R1=06H-01H=05H(说明实现了R0-R1 R0)此时M=0,S=0110,实现算术运算A-B-1,设置CIN=0(相当于C0=1
11、),让进位C0=1,因此实现运算(A-B-1)+1=A-B指令AND R0,R1( R0&R1 R0)的仿真测试文件及功能仿真波形b00001001; #20 M=1;b1011; #38 S=4 join 00ns DBUS=00000111 T3上升沿到来(5ns时)数据00000111被写R010ns DBUS=00001001 T3上升沿到来(15ns时)数据00001001被写R120ns DBUS= R0&R1=0000000130ns DRW=1 T3上升沿到来(35ns)时DBUS数据00000001被写R0,38 ns M=1,S=0000 DBUS=R0&R1=111111
12、10H 实现了求反运算(说明已经实现了R0&R1 R0)(3)RAM4RAM4.bdfcnt256cnt256.vmodule cnt256(Q,DATA,LDN,reset,clk);output 7:0 Q;input 7:0 DATA;input LDN,reset,clk;always (posedge clk or negedge reset) /clk上升沿触发 if(!reset) /异步清零,低电平有效 Q=8b0; else if(!LDN) Q=DATA; /同步置数,低电平有效 else Q=Q+1; /计数endmodule cnt256.vtmodule cnt256
13、_vlg_tst();reg LDN;reg clk;reg reset;cnt256 i1 ( .DATA(DATA), .LDN(LDN), .Q(Q), .clk(clk), .reset(reset) DATA=1hA; clk=0; reset=1; LDN=1; DATA=8d00010010; #20 reset=0; #40 reset=1; #260 LDN=0; #80 LDN=1;always #20 clk=clk;asdf 利用宏功能模块先生成单端口存储器,再用两单端口存储器进行连接生成双端口存储器RAM4仿真测试逻辑图双端口逻辑功能表(1)从左端口写存储器(在01H 单元中写入数据11H)(右端口为只读端口)T2 T3 MEMW SBUS LAR LPC MBUS CLR_ ARINC PCINC SD7.0 功能x 01HAR x1111H(01H)(地址线和数据线分时复用技术,先送地址,再送数据)用同样方法在02H 中写入22H (2)从左端口读存储器(从01H 中读出数据11H)(右端口为只读端口)xx (01H) DBUS(地址线和数据线分时复用技术,先送地址,再送数据)用同样方法读出02H 中的22H (3)从右端口读存储器(从01H 中读出数据11H)(右端口为只读端口)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1