Verilog实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2014-2015-2-G02A3050-1
电子电路设计训练(数字EDA部分)
实验报告
(2015 年5 月20 日)
教学班学号姓名组长签名成绩
自动化科学与电气工程学院
目录
目录 (1)
实验一、简单组合逻辑和简单时序逻辑 (1)
1.1 实验任务1——简单组合逻辑 (1)
1.1.1 实验要求 (1)
1.1.2 模块的核心逻辑设计 (1)
1.1.3 测试程序的核心逻辑设计 (1)
1.1.4 仿真实验关键结果及其解释 (2)
1.2 实验任务2——简单时序逻辑 (3)
1.2.1 实验要求 (3)
1.2.2 模块的核心逻辑设计 (3)
1.2.3 测试程序的核心逻辑设计 (3)
1.2.4 仿真实验关键结果及其解释 (4)
1.3 实验小结 (4)
实验二、条件语句和always过程块 (5)
2.1 实验任务1——利用条件语句实现计数分频时序电路 (5)
2.1.1 实验要求 (5)
2.1.2 模块的核心逻辑设计 (5)
2.1.3 测试程序的核心逻辑设计 (6)
2.1.4 仿真实验关键结果及其解释 (7)
2.2 实验任务2——用always块实现较复杂的组合逻辑电路 (8)
2.2.1 实验要求 (8)
2.2.2 模块的核心逻辑设计 (8)
2.2.3 测试程序的核心逻辑设计 (9)
2.2.4 仿真实验关键结果及其解释 (10)
2.3 实验小结 (11)
实验三、赋值、函数和任务 (12)
3.1 实验任务1——阻塞赋值与非阻塞赋值的区别 (12)
3.1.1 实验要求 (12)
3.1.2 模块的核心逻辑设计 (12)
3.1.3 测试程序的核心逻辑设计 (13)
3.1.4 仿真实验关键结果及其解释 (14)
3.2 实验任务2——在Verilog HDL中使用函数 (16)
3.2.1 实验要求 (16)
3.2.2 模块的核心逻辑设计 (16)
3.2.3 测试程序的核心逻辑设计 (18)
3.2.4 仿真实验关键结果及其解释 (19)
3.3 实验任务3——在Verilog HDL中使用任务 (20)
3.3.1 实验要求 (20)
3.3.2 模块的核心逻辑设计 (20)
3.2.3 测试程序的核心逻辑设计 (21)
3.2.4 仿真实验关键结果及其解释 (22)
3.3 实验小结 (22)
实验四、有限状态机 (23)
4.1 实验任务1——基于状态机的串行数据检测器 (23)
4.1.1 实验要求 (23)
4.1.2 模块的核心逻辑设计 (23)
4.1.3 测试程序的核心逻辑设计 (25)
4.1.4 仿真实验关键结果及其解释 (26)
4.2 实验任务2——楼梯灯 (26)
4.2.1 实验要求 (26)
4.2.2 模块的核心逻辑设计 (27)
4.2.3 测试程序的核心逻辑设计 (31)
4.2.4 仿真实验关键结果及其解释 (32)
4.3 实验小结 (34)
实验一、简单组合逻辑和简单时序逻辑
1.1 实验任务1——简单组合逻辑
1.1.1 实验要求
(1)设计一个两位数据比较器,比较两个数据a和b。若两数据相同,则给出结果1,否则给出结果0。
(2)设计一个字节(8位)的比较器,比较两个字节a[7:0]和b[7:0]的大小。若a大于b,则输出高电平,否则输出低电平。
1.1.2 模块的核心逻辑设计
(1)两位数据比较器
assign equal=(a==b)?1:0; //用连续赋值语句assign对结果equal赋值,a=b 时,equal输出为1,否则为0
(2)字节数据比较器
assign res=(a>b)?1:0; //用连续语句assign对结果equal赋值,a>b时equal输出为1,否则输出为0
1.1.3 测试程序的核心逻辑设计
(1)两位数据比较器
always #50 clock=~clock; //产生周期性跳变的时钟,50个时间单位跳变一次always@(negedge clock) //always后的语句表示时序控制,每次时钟下降沿时刻产生不同的a和b
begin
a={$random}%2;
b={$random}%2; //每次随机产生a和b
end
initial
begin#100000000 $stop; end//系统任务,暂停仿真以观察波形
(2)字节数据比较器
a={$random}%256;
b={$random}%256;//a和b从0~255共256个数中随机产生,即可生成8位字节数据
1.1.4 仿真实验关键结果及其解释
(1)两位数据比较器
图1两位数据比较器波形图
如图1所示,a和b相同时equal输出为高电平,否则输出低电平。
(2)字节数据比较器
图 2 字节数据比较器波形图
如图2所示,a>b时,res输出高电平,否则res输出低电平。
1.2 实验任务2——简单时序逻辑
1.2.1 实验要求
设计一个分频器,将时钟波形二分频。
1.2.2 模块的核心逻辑设计
always@(posedge clk_in)//always语句后表示时序控制,每次clk_in时钟上升沿时刻进行动作
begin
if(! reset) clk_out=0; //reset信号为低电平时,输出清零
else clk_out=~clk_out;//reset为高电平时,输出时钟clk_out在输入时钟clk_in的上升沿时刻翻转
end
1.2.3 测试程序的核心逻辑设计
always #`clk_cycle clk=~clk; //产生输入时钟
initial
begin
clk=0;
reset=1;
#10 reset=0; //reset给低电平,输出清零
#110 reset=1; //reset复位
#100000 $stop; //系统任务,暂停仿真以便观察波形
end