logo资料库

CSXXXX-UXXXXXXXX-XXX .docx

第1页 / 共61页
第2页 / 共61页
第3页 / 共61页
第4页 / 共61页
第5页 / 共61页
第6页 / 共61页
第7页 / 共61页
第8页 / 共61页
资料共61页,剩余部分请下载后查看
任务描述
相关知识
实验步骤
编程要求
测试说明
源码
Testbench代码
控制台输出和波形图
遇到问题和解决方法
实验心得、意见和建议
任务描述
相关知识
实验内容
遇到的问题及解决方法
实验心得、意见和建议
任务描述
相关知识
实验内容
遇到问题和解决方法
实验心得、意见和建议
实验报告 学院 班级 老师 姓名 学号 计算机科学与技术学院 计算机 XXXX XXX XXX UXXXXXXXX 2020 年 5 月 10 日 1
2
目录 实验 2 简单组合电路设计 任务描述....................................................................................................... 4 相关知识....................................................................................................... 4 实验步骤....................................................................................................... 5 编程要求....................................................................................................... 7 测试说明....................................................................................................... 7 源码............................................................................................................. 10 Testbench 代码............................................................................................ 12 控制台输出和波形图................................................................................. 13 遇到问题和解决方法................................................................................. 14 实验心得、意见和建议............................................................................. 17 实验 3 简单时序电路设计 任务描述..................................................................................................... 19 相关知识..................................................................................................... 19 实验内容..................................................................................................... 20 遇到的问题及解决方法............................................................................. 34 实验心得、意见和建议............................................................................. 35 实验 4 数据通路与有限状态机设计 任务描述..................................................................................................... 36 相关知识..................................................................................................... 36 实验内容..................................................................................................... 37 遇到问题和解决方法................................................................................. 61 实验心得、意见和建议............................................................................. 61 3
实验 2 简单组合电路设计  任务描述  相关知识  实验步骤  编程要求  测试说明  源码  Testbench 代码  控制台输出和波形图  遇到问题和解决方法  实验心得、意见和建议 任务描述 本关需要你根据所学的仿真测试的知识,完成选择器、译码器等组合电路的 设计,对电路进行测试。熟悉 vivado 工具的操作;学习、掌握用 Verilog 语言设 计组合逻辑电路的方法;掌握仿真测试方法,学习编写 testbench 并利用波形图 进行测试。 相关知识 测试平台(Testbench)是用于测试和验证设计的正确性的程序。编写 Testbench 的主要目的是对使用硬件描述语言设计的电路进行仿真验证,测试设 4
计电路的功能甚至部分性能是否与预期的目标相符。 测试一个实际功能电路需要用信号发生器来向电路输入测试信号、用示波器 来观察电路的信号输出是否正确。一个待测的 Verilog HDL 模块就相当于一个功 能电路,用 Testbench 对它进行仿真测试需要给待测模块输入激励、获取输出响 应并作判断。Testbench 需要完成以下工作: (1)产生仿真激励(波形); (2)将激励施加到被测试模块端口并收集其输出响应; (3)将输出响应与期望值进行比较,以判断是否符合预期目标。 典型的测试平台主要内容包括: `timescale 1ns/100ps//这里可适当指定仿真的“时间单位/时间精度” module XXX_tb; //Testbench 模块,通常没有输入和输出端口 //局部 reg、wire 变量声明 //用 initial 和 always 等语句产生激励(波形) //实例引用被测试模块(籍以将激励自动施加其上) //监视输出并与期望值做比较 //结束 testbench 程序的运行 endmodule 其中许多内容书写的先后顺序不拘。 假若被测模块定义为 //in1、in2 为 input 端口,out1 为 output 端口 module M1(in1, in2, out1); 则用来测试 M1 模块的 Testbench 模块,习惯上命名为 M1_tb,无输入无输 出。Testbench 声明局部 reg、wire 变量时,应该包括(但不限于)一批与被测模 块端口对应(不妨就同名)的变量,便于后面实例引用 M1 模块。并且与 input 端口、output 端口对应的变量分别声明成 reg 型和 wire 型。 实验步骤 请同学们根据实验任务细化实验步骤。 1. 编写如图 2.1 的 2 选 1 选择器电路的结构描述模块,并生成类似图 2.2 的原理图(RTL Analysis->Elaborated Design->Schematic)。 5
图 2.1 2 选 1 选择器电路 图 2.2 2 选 1 选择器 Schematic 2. 编写 2 选 1 选择器电路的数据流描述模块,并生成 Schematic。 3. 编写 2 选 1 选择器电路的行为描述模块,并生成 Schematic。 4. 用 2 选 1 多路选择器构造 3 选 1 多路选择器。顶层模块有 3 个数据输入端口(u,v,w)、 2 个选择输入端口(s0,s1)和 1 个输出端口(m)。3 选 1 多路选择器的电路和真值如 图 2-3 所示。请编写模块,并生成 Schematic。 图 2-3 3 选 1 多路选择器电路和真值表 5. 设计一个 3-8 译码器模块,其真值表如表 2.1 所示。 6
模块请用以下格式: module decoder_38(F, CBA); input [2:0] CBA; output reg [7:0] F; …… endmodule 表 2.1 译码器真值表 C B A F7 F6 F5 F4 F3 F2 F1 F0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 6. 为上述 3-8 译码器编写 Testbench 并进行测试。 编程要求 Testbench 要能生成包含各种输入值和对应输出值的波形图,并在 TCL 控制 台打印各种输入值和对应输出值。 测试说明 以下是测试样例。 【例】 五人投票表决器,过半数赞成则通过。仿真波形如图 2.4 所示。 module voter5(output pass, input vote); wire [4:0] vote; reg pass; //vote[i]表示第 i 人投票情况(1:赞成;0:反对) //最后结果(1:通过;0:不通过) 7
reg [2:0] count; //赞成票数 integer i; always @(vote) begin count = 0; for (i = 0; i < 5; i = i+1) if (vote[i]) count = count + 1; if (count >= 3) pass = 1; else pass=0; // 3 人以上赞成,则 pass=1 end endmodule //仿真测试 Testbench 模块 `timescale 1ns / 100ps ); module voter5_tb( wire pass; reg [4:0] vote; voter5 M(.pass(pass), .vote(vote)); initial begin $display ("$time::[vote] [count] [pass]------"); $monitor ("%t::", $time, "[%b]\t[%d]\t[%b]", vote,M.count,pass); end initial begin for (vote = 0; vote < 5'b11111; vote = vote + 1) #2; #2 $stop; end endmodule //TCL 控制台输出结果: $time::[vote] [count] [pass]------ 8
分享到:
收藏