第一部分:本次实验的介绍
这次给大家带来三次实验,以下是本次实验的代码
第一个实验
来自课本教材上的p39图2.42
行为级描述电路代码语言
module example5(x1,x2,s,f);
input x1,x2,s;
output f;
reg f;
always @(x1,x2,s)
if (s==0)
f=x1;
else
f=x2;
endmodule
第二个实验
来自Verilog HDL高级设计(第二版)
p159图6.16
锁存器的无意综合
第一个文件:or4实验原理文件
module or4_behav#(parameter word_length=4)(
output reg y,
input [word_length-1:0]x_in
);
integer k;
always@x_in begin:check_for_1
y=0;
for (k=0;k<=word_length-1;k=k+1)
if(x_in[k]==1)begin
y=1;
disable check_for_1;
end
end
endmodule
第二个文件:or4_;latch
module or4_behav_latch#(parameter word_length=4)(
output reg y,
input [word_length-1:0]x_in
);
integer k;
always@(x_in [3:1]) begin:check_for_1 //不完整敏感表
y=0;
for (k=0;k<=word_length-1;k=k+1)
if(x_in[k]==1)begin
y=1;
disable check_for_1;
end
end
endmodule
第三个实验
Verilog HDL仿真设计(第2版)
第十一章实验六
第一个文件:dds实验原理代码
module dds(clk,reset,div,choose,data);
input [5:0] div;
input [1:0] choose;
input clk,reset;
output [7:0] data;
wire [7:0]data;
reg [5:0] addr,address;
reg [5:0] i;
reg clkdiv;
function [7:0] rom;
input [5:0]address;
begin
case (address)
0 : rom = 0;
1 : rom = 4;
2 : rom = 12;
3 : rom = 21;
4 : rom = 25;
5 : rom = 21;
6 : rom = 12;
7 : rom = 4;
8 : rom = 20;
9 : rom = 20;
10 : rom = 20;
11 : rom = 20;
12 : rom = 1;
13 : rom = 1;
14 : rom = 1;
15 : rom = 1;
16 : rom = 0;
17 : rom = 5;
18 : rom = 10;
19 : rom = 15;
20 : rom = 20;
21 : rom = 25;
22 : rom = 30;
23 : rom = 35;
24 : rom = 35;
25 : rom = 30;
26 : rom = 25;
27 : rom = 20;
28 : rom = 15;
29 : rom = 10;
30 : rom = 5;
31 : rom = 0;
default :rom = 10'hxx;
endcase
end
endfunction
assign data = rom(address);
endmodule
第二个文件:tbs6实验测试代码
module tbs6;
reg [5:0] div;
reg [1:0]choose;
reg clk,reset;
wire [7:0] data;
initial
begin
clk=0;reset=1;div=1;choose=0;
#4 reset=0;
#4 reset=1;
#1000 choose=1;
#1000 choose=2;
#1000 choose=3;
#1000 $stop;
end
always #5 clk=~clk;
dds dds(clk,reset,div,choose,data);
endmodule
第二部分:实验的操作介绍
第一个实验:行为级语言的代码描述
第一个实验的操作:行为级描述语言电路的代码详情
第一步:将文件加入modelsim的library中打开
第二步:实验的波形图仿真的,实验的频率100ns参数为10ps
我们会发现:我们的实验的结果是一个具有周期性变化的时序图
详细的介绍请进入我的视频中:课本实验的讲解
第二个实验:锁存器的无意综合
第一步:将文件在modelsim的library中打开一个文件or4
第二步:实验进行波形图的,100ns频率,各个数值采用的10*n的递增
第三步:采用第一步的方法打开我们or4_latch文件
此时,进行一个代码的对比
第四步:观察波形图的变化,进行仿真图的分析
详细介绍会在我的视频:锁存器的无意综合
第三个实验:实验六“信号发生器设计”
第一步:在modelsim的library中打开实验的dds实验原理文件
第二步:在对实验代码的分析后,我们进行实验仿真
第三步:采用第一步,打开我们的tbs6实验测试代码
第四步:对测试代码进行仿真,得到以下的仿真图
详细的讲解,请进入我的视频:信号发生器设计
第三部分:实验总结
通过本学期的系统的学习数字逻辑电路为期几天的设计已经结束,在这几天的学习、设计及信号发生器仿真过程中我感触颇深。使我对抽象的理论有了具体的认识。通过对函数信号发生器的设计,我还深刻认识到了“理论联系实际”的这句话的重要性与真实性。
同时在这次实验中,我明白了老师为什么总是让我们动手操作,这样可以让我们明白怎样用所学的知识去解决实际问题。为了这次的实验设计,我们不得不去复习前面的知识,并且还在网上开始查资料,偶尔还会和同学们进行讨论。这对我们对之前所学习的知识起到了又一次的温习以及应用。在实验中,代码的错误是最能让人崩溃的,但是这些问题在同学互帮互助下,解决之后又感到特别的喜悦,看到那些波形图出来的时候会觉得特别有成就感。其次,这次课程设计提高了我和同学之间合作水平,使我们配合更加默契,体会到成功来自于汗水,体会到成果的来之不易。
通过本次实践操作,也让我深刻明白:只有将课本上的理论知识,结合实践不断练习,不断总结提炼,反复思考实践中的经验教训,才能够真正消化为自己的知识。
实验的工具:本次实验采用的13.1quartusII、modelsim10.1d和modelsim10.7d