西工大硬件描述语言实验报告.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
西工大硬件描述语言实验报告西工大硬件描述语言实验报告

1 - / NUMPAGES50 硬 件 描 述 语 言 实 验 报 告 班级: xxxxxxxx 学号: xxxxxxxx 姓名: xxxxxxxx 目 录 TOC \o 1-2 \u 硬 件 描 述 语 言 - 0 - 实 验 报 告 - 0 - 实验一 简单组合逻辑设计 - 2 - 实验二 简单分频时序逻辑电路的设计 - 4 - 实验三 利用条件语句实现计数分频时序电路 - 7 - 实验四 阻塞赋值与非阻塞赋值的区别 - 12 - 实验五 用always块实现较复杂的组合逻辑电路 - 16 - 实验六 在Verilog中使用函数 - 21 - 实验七 在Verilog HDL中使用任务(task) - 25 - 实验八 利用有限状态机进行时序逻辑的设计 - 32 - 实验九 利用状态机实现比较复杂的接口设计 - 36 - 实验十 利用SRAM设计一个FIFO - 46 - 实验一 简单组合逻辑设计 实验目的 1.掌握基本组合逻辑电路的实现方法。 2.初步了解两种基本组合逻辑电路的生成方法。 3.学习测试模块的编写。 4.通过综合和布局布线了解不同层次仿真的物理意义。 实验内容 本次实验采用Verilog HDL语言设计一个可综合的数据比较器,其功能是比较数据a与数据b的结果,如果两个数据相同,则输出结果1,否则给出结果0;并写出测试模型,使其进行比较全面的测试。 实验步骤 1.建立工程文件,编写模块源码和测试模块,要求测试模块对源文件进行比较全面的测试; 2.编译源码和测试模块,用测试模块对源文件进行测试,并进行仿真; 3.观察综合后生成的文件和源文件的不同点和相同点。 4.综合时采用不同的FPGA器件,观察综合后的结果有什么不同。 实验代码 1.模块源码 module compare(equal, a, b); input a,b; output equal; assign equal = (a == b)?1:0; endmodule 2.测试代码 `timescale 1ns/1ns module compare_t; reg a, b; wire equal; initial begin a=0; b=0; #100 a=0; b=1; #100 a=1; b=1; #100 a=1; b=0; #100 a=0; b=0; #100 $stop; end compare m(.equal(equal),.a(a),.b(b)); endmodule 综合仿真 RTL图及仿真后波形图: 思考题 1.课本练习一的测试方法二中,第二个initial块有什么用?它与第一个initial块有什么关系? 测试方法二中的第二个initial用来暂停仿真以便观察仿真波形,它与第一个initial是并行关系 2.如果在第二个initial块中,没有写出#10000或者$stop,仿真会如何进行? 如果没有写#10000,仿真会直接停止,没有$stop,仿真不会结束。 3.比较两种测试方法,哪一种更全面? 第二种测试方法更全面,测试了更多种的变换的情况。 实验二 简单分频时序逻辑电路的设计 实验目的 1.掌握条件语句在简单时序模块设计中的使用; 2.掌握verilog语句在简单时序模块设计中的使用; 3.学习在Verilog模块中应用计数器; 4.学习测试模块的编写、综合和不同层次的仿真。 实验内容 1.使用always块和@(posedge clk)或@(negedge clk)的结构来表述时序逻辑,设计1/2分频的可综合模型。得到如下波形图: 2.对模块进行RTL级仿真、综合后门级仿真,布局布线仿真; 实验步骤 1.建立工程文件,编写模块源码和测试模块,要求测试模块能对源文件进行比较全面的测试。 2.编译源码和测试模块,用测试模块对源文件进行测试,并综合仿真。得到波形图。 3.观察综合后生成的文件和源文件的不同点和相同点。 4.记录数据并完成实验报告。 实验代码 模块代码 module half_clk(reset,clk_in,clk_out); input clk_in,reset; output clk_out; reg clk_out; always @(posedge clk_in) begin if(!reset) clk_out=0; else clk_out=~clk_out; end endmodule 2.测试代码 `timescale 1ns/100ps `define clk_cycle 50 module top; reg clk,reset; wire clk_out; always #`clk_cycle clk=~clk; initial

文档评论(0)

netball + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档