蔡觉平老师verilog上机作业解析Word文档格式.docx
- 文档编号:19934088
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:17
- 大小:79.60KB
蔡觉平老师verilog上机作业解析Word文档格式.docx
《蔡觉平老师verilog上机作业解析Word文档格式.docx》由会员分享,可在线阅读,更多相关《蔡觉平老师verilog上机作业解析Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
inputdin,clk;
outputout0,out1,out2,out3;
regout0,out1,out2,out3;
always@(posedgeclk)
begin
out3=out2;
out2=out1;
out1=out0;
out0=din;
modulenon_block1(din,clk,out0,out1,out2,out3);
out0<
=din;
out1<
=out0;
out2<
=out1;
out3<
=out2;
题目4:
设计16位同步计数器
要求:
(1)分析16位同步计数器结构和电路特点;
(2)用硬件描述语言进行设计;
(3)编写测试仿真并进行仿真。
moduleb;
regclk;
regreset;
wire[3:
0]count,result;
always#5clk=~clk;
initialbeginclk=0;
reset=0;
#20reset=1;
aU1(.clk(clk),.reset(reset),.result(result),.count(count));
endmodule
modulea(count,clk,reset,result);
outputcount,result;
inputclk,reset;
reg[3:
0]count;
always@(posedgeclk)
begin
if(!
reset)count=4'
b0000;
elsecount=count+1;
end
assignresult=count[0]||count[1]||count[2]||count[3];
题目5.试用VerilogHDL门级描述方式描述如下图所示的电路。
modulediwuti(D0,D1,D2,D3,S1,S2,Z);
outputZ;
inputD0,D1,D2,D3,S1,S2;
wirewi1,wi2,w3,w4,w5,w6;
notU1(w1,S1),
U2(w2,S2);
andU3(w6,D3,S2),
U4(w5,D2,S1,w2),
U5(w4,D1,S1,w1),
U6(w3,D0,w1,w2);
orU7(Z,w3,w4,w5,w6);
题目6.试用查找真值表的方式实现真值表中的加法器,写出VerilogHDL代码:
Cin
ain
bin
sum
Cout
1
modulefulladder(SUM,C_OUT,A,B,C_IN);
outputSUM,C_OUT;
inputA,B,C_IN;
regSUM,C_OUT;
always@(AorBorC_IN)
case({A,B,C_IN})
3'
b000:
SUM<
=0;
C_OUT<
b001:
=1;
b010:
b011:
b100:
b101:
b110:
b111:
C_OUT<
endcase
endmodule
题目7:
设计16位同步加法器和乘法器
(1)分析16位同步加法器和乘法器结构和电路特
点;
modulec;
parameteradder16_width=16;
reg[adder16_width-1:
0]ain,bin;
regCin;
wire[adder16_width-1:
0]sum;
wireCout;
initial
begin
ain=10;
bin=10;
Cin=1;
#5ain=16'
b1111111111111111;
#10bin=1;
aU1(.ain(ain),.bin(bin),.Cin(Cin),.Cout(Cout),.sum(sum));
moduled;
parameterwidth=16;
reg[width-1:
0]ain,din;
wire[width*2-1:
0]mul;
initialbeginain=2;
din=2;
initialbegin#10ain=100;
#15din=100;
bU1(.ain(ain),.din(din),.mul(mul));
modulea(bin,ain,sum,Cout,Cin);
output[width-1:
outputCout;
input[width-1:
inputCin;
assign{Cout,sum}=ain+bin+Cin;
modulec(ain,din,mul);
output[width*2-1:
assignmul=ain*din;
题目8.将下面的状态转移图用VerilogHDL描述。
在图中,状态机的输入只与状态的跳转有关,与状态机的输出无关,因此该状态机为摩尔型状态机。
下面为三段式描述方式
moduleb(clk,out,step,clr);
output[2:
0]out;
inputstep,clk,clr;
reg[2:
reg[1:
0]state,next_state;
always@(posedgeclk)
state<
=next_state;
always@(stateorclr)
if(clr)
next_state<
else
case(state)
2'
b00:
case(step)
1'
b0:
beginnext_state<
=2'
b00;
out<
=3'
b001;
b1:
b01;
out<
b01:
b010;
b11;
end
b11:
b100;
b10;
b10:
b111;
modulea;
regclk,step,clr;
always
#5clk=~clk;
Initial
beginclk=0;
clr=1;
step=1;
begin#5clr=0;
#80step=0;
#100step=1;
bU1(clk,out,step,clr);
题目9.如下图所示电路,若其延迟时间设定如表所示,试写VerilogHDL程序设计该电路。
路径
最小值(min)
典型值(type)
最大值(max)
a_sa_y
10
12
14
s_s0_sa_y
15
17
19
s_sb_y
11
13
b_sb_y
modulea(a,s,b,y,s0);
inputa,b,s,s0;
outputy;
assigny=(s&
&
b)||(s0&
a);
specify
(a=>
y)=(10,12,14);
(b=>
(s=>
y)=(11,13,15);
(s0=>
endspecify
moduleb(a,s,b,y);
inputs,a,s,b;
wires0;
not#(4)U1(s0,s);
delay_doorU2(a,s,b,y,s0);
题目10.设计一个8位数字显示的简易频率计。
①能够测试10Hz~10MHz方波信号;
②电路输入的基准时钟为1Hz,要求测量值以8421BCD码形式输出;
③系统有复位键;
④采用分层次分模块的方法,用VerilogHDL进行设计。
modulex;
regstandard_clk;
regtest_clk;
wire[7:
initialbeginreset=0;
test_clk=0;
standard_clk=0;
initial#15reset=1;
always#1test_clk=~test_clk;
always#10standard_clk=~standard_clk;
aU1(.reset(reset),.test_clk(test_clk),.standard_clk(standard_clk),.ratio_final(out));
modulea(reset,test_clk,standard_clk,ratio_final);
inputreset,test_clk,standard_clk;
output[7:
0]ratio_final;
wiremul_clk;
wirereset_comp;
0]ratio_start;
andU0(reset_comp,reset,standard_clk);
tU1(.ain(test_clk),.din(standard_clk),.mul(mul_clk));
wU2(.clk(mul_clk),.count(ratio_start),.reset(reset_comp));
cU3(.ratio_start(ratio_start),.ratio_final(ratio_final));
modulew(clk,count,reset);
outputcount;
parameterbit=8;
reg[bit-1:
always@(posedgeclkornegedgereset)
reset)
count<
=8'
b00000000;
else
=count+1;
modulet(ain,din,mul);
parameterwidth=1;
modulec(ratio_start,ratio_final);
input[7:
assignratio_final=2*ratio_start;
题目11.用VerilogHDL设计一个4位LED显示器的动态扫描译码电路。
①4个七段显示器共用一个译码驱动电路;
②显示的数码管清晰明亮,无闪烁现象发生。
modulea(out,in);
outputout;
inputin;
reg[6:
wire[3:
0]in;
always@(in)
case(in)
4'
d0:
out=7'
b1111110;
d1:
b0110000;
d2:
b1101101;
d3:
b1111001;
d4:
b0110011;
d5:
b1011011;
d6:
b1011111;
d7:
b1110000;
d8:
b1111111;
d9:
b1111011;
modulew(in1,in2,in3,in4,out1,out2,out3,out4);
outputout1,out2,out3,out4;
inputin1,in2,in3,in4;
0]in1,in2,in3,in4;
wire[6:
0]out1,out2,out3,out4;
aU1(.in(in1),.out(out1));
aU2(.in(in2),.out(out2));
aU3(.in(in3),.out(out3));
aU4(.in(in4),.out(out4));
in1=4'
b0010;
in2=4'
b0100;
in3=4'
b1000;
in4=4'
#5in4=4'
b0111;
b0110;
wU1(in1,in2,in3,in4,out1,out2,out3,out4);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 蔡觉平 老师 verilog 上机 作业 解析