Verilog-HDL试卷及答案
- 格式:doc
- 大小:73.00 KB
- 文档页数:5
reg [7:0] q=8‘b;
右边是最低位,q[0]~q[6]为0,q[7]为1
q[7:0]<={q[0],q[7:1]}相当于一个循环右移操作,将q[0]的值赋给q[7],q[7]~q[1]依次向右移位一位。
根据前值8‘b,第一个时钟周期后变为8‘b01000000;第二个时钟周期后变为8‘b00100000;类推。
第八个时钟周期后又回到q=8‘b
一、选择题:
1、下列标示符哪些是合法的(B )
A、$time
B、_date
C、8sum
D、mux#
2、如果线网类型变量说明后未赋值,起缺省值是(D )
A、x
B、1
C、0
D、z
3、现网中的值被解释为无符号数。
在连续赋值语句中,assign addr[3:0]=-3;addr被
赋予的值是( A )……………………………… code #(1,5) d1(x1,y1);
endmodule endmodule
A、(1,1)
B、(5,5)
C、(5,1)
D、(1,5)
6、“a=4’ b11001,b=4’ bx110”选出正确的运算结果(B )
A、a&b=0
B、a&&b=1
C、b&a=x
D、b&&a=x
7、时间尺度定义为timescale 10ns/100ps,选择正确答案(C )
A、时间精度10ns
B、时间单位100ps
C、时间精度100ps
D、时间精度不确定
8、若a=9,执行$display(“current value=%0b,a=%0d”,a,a)正确显示为(B )endtask
3、if(a) out1<=int1; 当a= 1 执行out1<=int1
else out1<=int2; 当a= 0 执行out1<=int2
4、4’ b1001<<2= 4’b100100 ,4’ b1001>>2= 4’b0010 。
;
3 output ……;
4 reg a,b……;
5 always@(……..)
6 assign f=c&d;
7 always@(……..)
8 begin
9 a=…….;
10 b=…….;
end
11 mux mux1(out,in0,in1);
endmodule
四、简答题:(共30分)
1、always语句和initial语句的关键区别是什么能否相互嵌套(5分)
always语句是循环语句,initial只执行一次。
它们不能嵌套。
2、画出下面程序段中r(reg型)的仿真波形 (6分)
fork
#20 r=1’ b0;
#10 r=1’ b1;
#15 r=1’ b1;
#25 r=1’ b1;
#5 r=1’ b0;
join
3、画出下面程序综合出来的电路图。
(7分)
always@(posedge clk)
begin
q0<=~q2;
q1<= q0;
q2<= q1;
end
4、HA 模块程序如下,写出引用HA 模块描述FA 模块的Verilog 程序。
(7分) module HA(A,B,S,C);
input A,B;
output S,C;
assign {C,S}=A+B;
endmodule
module FA(A,B,Ci,Co,S);
input A,B,Ci;
output Co,S;
wire Sl,C1,C2;
HA a(A,B,Sl,C1);
HA b(Sl,Ci,C2,S);
assign Co=C1|C2;
endmodule
5、写出下面程序中变量x ,y ,cnt ,m ,q 的类型(5分)
Assgin x=y; always@(posegde clk)
begin
cnt=m+1; x 为wire 型
y 为reg 或wire 型 cnt 为reg 型
q=~q;
end
五、编程题:(6分)
1、设计一奇偶校验位生成电路,输入八位总线信号bus,输出及校验位odd,偶校
验位even。
(6分)
2、设计一个带复位端且对输入时钟clk进行二分频模块,并画出仿真波形。
(9分)
设计要求:复位信号为同步、高电平有效,时钟的下降沿触发
3、设计一带异步复位端、异步置数段(低电平有效)的四位加法计数器,时钟clk
上升沿有效),复位信号clr,置数信号load、输入数据data、输出qout。
并画出仿真波形。
(20分)
五题答案1. module parity(even,odd,bus);
output even,odd;
input[7:0] bus; module m2(out,clk,reset);
input reset,clk;
output out;
reg out;
always @(negedge clk)
begin
if(reset)
out<=0;
else
out<=~out;
end
endmodule
3. module adder_4(qout,clr,clk,load,data);
output[3:0] qout;
input[3:0] data;
input load,clr,clk;
reg[3:0] qout;
always @(posedge clk or negedge load or negedge clk) begin
仿真波形
if(!load)
qout<=data;
else if(!clr)
qout<=0;
else qout<=qout+1;
end
endmodule。