ImageVerifierCode 换一换
格式:DOCX , 页数:4 ,大小:52.16KB ,
资源ID:2261376      下载积分:15 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-2261376.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(流水灯基于Verilog语言实现及测试代码.docx)为本站会员(sk****8)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

流水灯基于Verilog语言实现及测试代码.docx

1、流水灯实验的 Testbench 报告一、 设计源码(顺序方法)module led(input clk,input rstn,output reg3:0led);parameter T1s = 4d10;reg3:0cnt_1s;always(posedge clk or negedge rstn)if(!rstn)begincnt_1s = 0;endelse if(cnt_1s = T1s)begincnt_1s = 0;endelse begincnt_1s = cnt_1s + 1b1;endalways(posedge clk or negedge rstn)if(!rstn)be

2、ginled = 4hf;endelse if(led = 4hf) beginled = 4he;endelse if(cnt_1s = T1s)beginled = led2:0,1b1;endendmodule二、 测试代码timescale 1 ns/1 nsmodule led_tb();reg clk ;reg rstn;wire3:0 led;parameter CYCLE = 20; parameter RST_TIME = 3 ;led u( .clk (clk ), .rstn (rstn ),.led (led ) );initial beginclk = 0;forev

3、er#(CYCLE/2)clk=clk;endinitial beginrstn = 1;#CYCLE;rstn = 0;#(CYCLE*RST_TIME);rstn = 1;endendmoduleTestbench 设计的几个步骤:1、 设定时间标尺、timescale;2、 定义信号类型,与输入对接的 reg,与输出对接的 wire;3、 对待测设计的顶层模块进行例化,即将 testbench 与待测设计接口对接;4、 给输入接口产生激励。三、 结果分析老师的源代码中设置的流水灯跳转周期是 1S 钟,但是在仿真的过程中,1S实在是太漫长了,所以我将跳转周期改为 10 个时钟周期了。根据

4、testbench 可知,第一个时间周期结束,拉低复位信号。复位信号产生低电平,always 块得到反应,led=4hf(即 1111);每次 clk 上升沿的时候 always 都会响应,但是 rstn 为低电平时,计数的变量 cnt_1s 会一直清零,led 一直处于全灭状态。我在 TESTBENCH 中设置的 rstn 拉低持续 3时钟周期,3 时钟周期后,rstn 会变成高电平,在下一个 clk 上升沿,always 又开始响应,根据设计当 led 原状态为 1111,触发后会跳转为1110,即第一个 led 亮。之后,按设计初衷应该是每过 10 个时钟周期,led 产生一次流水式变化

5、,但实际情况并非如此。我们可以看到上图中黄线位置,led 由 0111 经过 10 个时钟周期后变成 1111,但是 1111 只持续了一个周期就变成了 1110.原来,在第二个always 中有这么一句else if(led = 4hf) beginled = 4he;end虽然计时变量 cnt_1s 未满足条件,但是 led=1111,仍然会使 led 发生改变。而且 led=1111 时,led 是处于全灭状态,作为流水灯应该是不希望全灭状态的出现,第四个灯亮完,应该马上跳转到第一个灯。即便如此在实物电路中,这并不会影响功能的实现,因为多出的这一个时钟周期仅为20ns,人的肉眼根本无法识别。四、 程序优化试想如果这不是一个流水灯实验,而是一个对精度有很高要求的电路,不允许出现这么一段全 1 的状态,那么程序该如何修改?其实 led 全为 1 的状态,主要是由于第二个 always 模块产生,所以只用修改第二个 always 的内容,下面是我修改后的代码,和运行结果。这段代码主要的关键就在于阻塞赋值。修改后:运行结果:对比运行结果,我们很容易发现,led 没有再出现全 1 的状态,而是标准的按照 10 个时钟周期跳转一次,达到预期效果。

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。