s2<=0; #400 a<=0; b<=0; c<=0; d<=1; s1<=1; s2<=1;
end
(3)仿真结果
3.3-8译码器 (1)VERILOG程序 module yimaqi38( input wire [2:0]a, output wire [7:0]y );
assign y[0]=~a[2]&~a[1]&~a[0];
assign y[1]=~a[2]&~a[1]&a[0]; assign y[2]=~a[2]&a[1]&~a[0]; assign y[3]=~a[2]&a[1]&a[0]; assign y[4]=a[2]&~a[1]&~a[0]; assign y[5]=a[2]&~a[1]&a[0]; assign y[6]=a[2]&a[1]&~a[0]; assign y[7]=a[2]&a[1]&a[0];
endmodule (2)约束文件 NET\NET\NET\
NET\NET\NET\NET\NET\NET\NET\NET\
实验五、组合逻辑电路实验Ⅱ(2学时)
组合逻辑Ⅱ:
(1)完成4位数码管动态显示设计(见P121),实现将8个SW输入的两位十六进制数对应的8421BCD码,显示在数码管上。数码转换关系表4-2所示(见P115),比如,若在8个开关SW上输入2FH,四个数码管由左到右应显示0215。实验前编写好VERILOG源文件、用户约束文件等。(验收逻辑功能) 。
实现将8个SW输入的两位十六进制数对应的十进制数,显示在数码管上。比如,若在8个开关SW上输入7FH,四个数码管由左到右应显示127。实验前编写好VERILOG源文件、用户约束文件等。(验收逻辑功能) 。(选做)
(2)参考P126,:用Verilog语言设计一个4位全加器,给出布线后仿真波形,测试加法器的延时(要求在预习报告中完成)。(查看布线后仿真波形)。
(3)用Verilog语言设计一个4位比较器。用两组、每组4个逻辑开关作为输入,比较两组逻辑开关输入二进制数的大小,用三个LED灯指示比较结果,三个逻辑指示灯分别指示大于、等于、小于。(选做) 实验程序
1.2位16进制数码管 (1)VERILOG代码 input wire [7:0]x,
input wire clk,
input wire clr,
output reg [6:0]a_to_g, output reg [3:0]an
); wire s;
reg [3:0]digit; reg [19:0]clkdiv; assign s=clkdiv[19];
always@(*)
case(s)
0:if(x[3:0]>=4'b1010) digit=x[3:0]-4'b1010;
else
digit=x[3:0];
1:if(x[3:0]>=4'b1010) digit=4'b0001;
else
digit=4'b0000;
2:if(x[7:4]>=4'b1010)
digit=x[7:4]-4'b1010;
else
digit=x[7:4];
3:if(x[7:4]>=4'b1010)
digit=4'b0001;
else
digit=4'b0000;
default:digit=4'b0000; endcase
always@(*) case(digit)
0:a_to_g= 7'b0000001;
1:a_to_g= 7'b1001111; 2:a_to_g= 7'b0010010; 3:a_to_g= 7'b0000110; 4:a_to_g= 7'b1001100; 5:a_to_g= 7'b0100100; 6:a_to_g= 7'b0100000; 7:a_to_g= 7'b0001111; 8:a_to_g= 7'b0000000; 9:a_to_g= 7'b0000100; 'hA:a_to_g= 7'b0001000; 'hB:a_to_g= 7'b1100000;