Verilog HDL 硬件描述语言设计基础.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机组成原理实验 实验一 Verilog HDL 硬件描述语言设计基础 专业班级:计算机科学与技术 学号: 0936008 姓名:冯帆 学号: 0936036 姓名:张琪 实验地点: 理工楼901 实验一 Verilog HDL 硬件描述语言设计基础 一、实验目的 学习Verilog HDL的基本语法和编程规则 掌握寄存器等常用基本数字模块的Verilog HDL描述 掌握常用寄存器的基本设计方法 掌握移位寄存器设计方法 二、实验内容 1、阅读VerilogHDL的基本语法(见PPT); 2、阅读常用基本模块的VerilogHDL描述;(见PPT); 3、完成一个常用寄存器的设计:要求寄存器位数可定制;寄存器带有输出控制端;仿真验证;封装成模块。(参阅P72-75) 4、完成一个双向移位寄存器的设计:要求寄存器位数可定制;双向时钟;仿真验证;封装成模块。(参阅P87-89) 三、实验仪器及设备: PC机+ QuartusⅡ 9.0 + DE2-70 四、实验步骤 1、新建工程。 2、新建verilog文件。 3、分析寄存器程序代码并编译。 附代码如下: /* 带输出控制端的寄存器*/ `define WEISHU 8 module jcq(rL,clk,cclr,d,dout,outable); //模块定义 input rL; input clk; input cclr; input [`WEISHU-1:0]d; input outable; output [`WEISHU-1:0]dout; //输入输出定义 wire [`WEISHU-1:0]w_0; wire [`WEISHU-1:0]w_1; wire [`WEISHU-1:0]w_2; wire w_3; //wire型定义 reg [`WEISHU-1:0]w_dff; reg [`WEISHU-1:0]dout; assign w_2=w_0|w_1; always @(posedge clk or negedge cclr) begin if(!cclr) w_dff=0; else w_dff=w_2; end always @(outable) begin if(outable==1) dout=w_dff; else dout=8bz; end assign w_0=d {`WEISHU{rL}}; assign w_1={`WEISHU{w_3}} w_dff; assign w_3=~rL; endmodule /*双向移位寄存器设计*/ `define N 64 module basic_shift_register( clkL,clkR, enable,sr_L_in,sr_R_in,L_or_R,sr_out); input clkL,clkR, enable; input sr_L_in; input sr_R_in; input L_or_R; output sr_out; // Declare the shift register reg[`N-1:0] sr=64b1111000011110000111100001111000011110000111100001111000011110000; reg sr_out; wire clk; // Shift everything over, load the incoming bit assign clk=(L_or_R)?(clkL):(clkR); always @ (posedge clk) begin if (enable == 1b1) begin if (L_or_R==1) begin sr[`N-1:1] = sr[`N-2:0]; sr[0] = sr_L_in; sr_out = sr[`N-1]; end else begin sr[`N-1:1] = sr[`N-2:0]; sr[`N-1] = sr_R_in; sr_out = sr[0]; end end end endmodule 4、仿真。 如图下: 5、将两个已经设计好的文件封装成模块。 如下图所示: 五、实验思考题 1、寄存器寄存数据的原理是什么? 在时钟边沿未到来之前,寄存器的输出保持不变,当时钟边沿到来时,寄存器的输出根据输入的变化而变化。 2、如何给寄存器加入输出控制功能?

文档评论(0)

精华文档888 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档