0 1 1 1 1
1 0 0 1 1 1 0 1 0 1 0 1 0 0 1 1 0 1 1 1 解答:
module homework6(SUM,COUT,A,B,CIN); output SUM,COUT; input A,B,CIN; reg SUM,COUT;
always@(A or B or CIN) case({A,B,CIN})
3'b000:SUM<=0; 3'b000:COUT<=0; 3'b001:SUM<=1; 3'b001:COUT<=0; 3'b010:SUM<=1; 3'b010:COUT<=0; 3'b011:SUM<=0; 3'b011:COUT<=1; 3'b100:SUM<=1; 3'b100:COUT<=0; 3'b101:SUM<=0; 3'b101:COUT<=1; 3'b110:SUM<=0; 3'b110:COUT<=1; 3'b111:SUM<=1; 3'b111: COUT<=1; endcase endmodule
题目7:设计16位同步加法器和乘法器 要求:(1)分析16位同步加法器和乘法器结构和电路特点; (2)用硬件描述语言进行设计; (3)编写测试仿真并进行仿真。
解答:
(1)16位同步加法器和乘法器结构和电路特点:加法器的进位只用考虑一位,但是乘法器的进位要考虑到32位才行。 (2)程序代码: 16位同步加法器:
module adder(a,b,c,sum,cout); output [15:0]sum; output cout; input [15:0]a,b; input c;
assign {cout,sum}=a+b+c; endmodule
16位同步乘法器:
module multiplier(a,b,mul); input [15:0]a,b; output [31:0]mul; assign mul=a*b; endmodule
(3)仿真代码: 16位同步加法器: module adder_tb; reg [15:0]a,b; reg c;
wire [15:0]sum; wire cout; initial begin
a=8;b=8;c=1; end initial begin
#10 a=16'b1111111111111111;#10 b=1; end
adder U2(.a (a),.b (b),.c(c),.cout(cout),.sum(sum)); endmodule
16位同步乘法器: module multiplier_tb; reg [15:0]a,b; wire [31:0]mul; initial begin
a=3;b=8; end initial begin #10 a=100; #15 b=100; end
multiplier U1(.a(a),.b(b),.mul(mul)); endmodule
仿真截图: 加法器:
乘法器:
题目8. 将下面的状态转移图用Verilog HDL描述。在图中,状态机的输入只与状态的跳转有关,与状态机的输出无关,因此该状态机为摩尔型状态机。下面为三段式描述方式。
start=0clr=1State0out=001step3=1start=1step3=0State3out=111step2=0State1out=010step2=1State2out=100 解答: 程序代码:
module homework8(clk,out,step,clr); output [2:0]out; input step,clk,clr; reg [2:0]out;
reg [1:0]state,next_state; always @(posedge clk) state<=next_state; always @(state or clr) if(clr)
next_state<=0; else
case(state) 2'b00:
case(step)
1'b0:begin next_state<=2'b00;out<=3'b001;end 1'b1:begin next_state<=2'b01;out<=3'b001;end endcase
2'b01: begin
out<=3'b010;
next_state<=2'b10; end
2'b10:
case(step)
1'b0:begin next_state<=2'b00;out<=3'b100;end 1'b1:begin next_state<=2'b11;out<=3'b100;end endcase 2'b11:
case(step)
1'b0:begin next_state<=2'b11;out<=3'b111;end 1'b1:begin next_state<=2'b00;out<=3'b111;end endcase endcase endmodule
仿真代码:
module homework8_tb; reg clk,step,clr; wire [3:0]out; always
#5 clk=~clk; initial
begin clk=0; clr=1; step=1; end initial begin #5clr=0; #10 step=0; #10step=1; end
homework8 U1(clk,out,step,clr); endmodule
仿真截图:
题目9. 如下图所示电路,若其延迟时间设定如表所示,试写Verilog HDL程序设计该电路。
asb路径 a_sa_y s_s0_sa_y sas0sb 最小值(min) 10 15 典型值(type) 12 17 最大值(max) 14 19 y