2015年EDA复习11 联系客服

发布时间 : 星期三 文章2015年EDA复习11更新完毕开始阅读

input ci; output[3:0] s; output co;

wire[3:0] carry;

function fa_s(input a,input b,input ci); fa_s = a ^ b ^ ci; endfunction

function fa_c(input a,input b,input ci); fa_c = a & b | a & ci | b & ci; endfunction

assign s[0] = fa_s(a[0],b[0],ci); assign carry[0] = fa_c(a[0],b[0],ci);

assign s[1] = fa_s(a[1],b[1],carry[0]); assign carry[1] = fa_c(a[1],b[1],carry[0]);

assign s[2] = fa_s(a[2],b[2],carry[1]); assign carry[2] = fa_c(a[2],b[2],carry[1]);

assign s[3] = fa_s(a[3],b[3],carry[2]); assign co = fa_c(a[3],b[3],carry[2]); endmodule

2.试用verilog语言产生如下图所示的测试信号

clkin1in2051015202530354045ns

module signal_gen9(clk,in1,in2); output in1,in2,clk; reg in1,in2,clk; initial begin

in1=0; in2=1; clk=0; end initial begin

#15 in1=1 #10 in1=0; #5 in1=1; #10 in1=0;

end initial begin

#5 in2=0; #5 in2=1; #25 in2=0; end always begin

#5 clk=~clk; end

endmodule

3.p131 例9.1 4. p131 例9.2

5、八路数据通道选择器 P147页

6、数据位宽可由用户定义的比较器的模块程序。(P146)

7.试用verilog语言,利用内置基本门级元件,采用结构描述方式生成如图所示的电路

D3D2D1D0S2S1T3T2T1T0Z

module MUX4x1(Z,D0,D1,D2,D3,S0,S1);

output Z;

inout D0,D1,D2,D3,S0,S1; and u0 (T0, D0, S0bar, S1bar) , u1(T1, D1, S0bar, S1), u2 (T2, D2, S0, S1bar), u3 (T3, D3, S0, S1) , not u4 (S0bar, S0), u5 (S1bar, S1);

or u6 (Z, T0, T1, T2, T3); endmodule

8、用Verilog语言设计一个输入数据位宽可由用户定义的有符号数的求补码程序,并编写测试代码。

求补码模块程序:

module Binary_complement(a,b); //二进制数补码 input [width-1:0] a; output [width-1:0] b; integer i;

reg [width-1:0]d; reg [width-2:0]c; parameter width=8; always @(a) begin

if(a[width-1]==1) begin

for(i=0;i< width-1;i=i+1)c[i]=!a[i];

d[width-1:0]={a[width-1],(c[width-2:0]+ width -1'd1)}; end

else d[width -1:0]=a[width-1:0];

end

assign b[width-1:0]=d[width-1:0]; endmodule

测试程序入如下: `timescale 1ns/1ns

`include \

module stimulus; //测试模块的名字 reg[7:0] a; wire[7:0]b;

Binary_complement mycount(a,b);//调用测试对象 initial

begin //激励信号定义 a=1; #10 a=2; #10 a=-8'd8; #10 a=127; #10 a=255; #10 $finish; end

//定义结果显示格式

initial $monitor($time,\endmodule

9. 试用verilog语言描述:图示为一个4位移位寄存器,是由四个D触发器(分别设为U1,U2,U3,U4)构成的。其中seri_in是这个移位寄存器的串行输入;clk为移位时脉冲输入;clr为清零控制信号输入;Q[1]~Q[3]则为移位寄存器的并行输出。