(ISE使用流程)逻辑设计实验(6)

2018-12-20 15:12

key_nege_flag<=1'b0; else

if(key_dly==1'b0&&key_dly1==1'b1) key_nege_flag<=1'b1; else if(key_pulse==1'b1) key_nege_flag<=1'b0; end

always @(negedge reset_n or posedge clk) begin

if(reset_n==1'b0)

key_pose_flag<=1'b0; else if(key_nege_flag==1'b1) begin if(key_dly==1'b1&&key_dly1==1'b0) key_pose_flag<=1'b1; else if(key_pulse==1'b1) key_pose_flag<=1'b0; end end

always @(negedge reset_n or posedge clk) begin

if(reset_n==1'b0) key_pulse<=1'b0; else

if(key_pose_flag==1'b1&&key_nege_flag==1'b1) key_pulse<=~key_pulse; else key_pulse<=key_pulse; end

always @(posedge clk or negedge reset_n) begin if(reset_n==1'b0) led <=1'b1; else if(key_pulse==1'b1) led <=~led; end

endmodule

26

测试文件:

`include\`timescale 1ns/1ns

module key_scan_t; reg clk,key,reset_n; wire led;

key_scan test(.clk(clk),.key(key),.reset_n(reset_n),.led(led)); always #1 clk=~clk; initial begin

reset_n=0;key=1;clk=0; #10 reset_n=0; #10 reset_n=1; #10 key=0; #10 key=1; #10 key=0; #10 reset_n=0; #10 reset_n=1; #10 key=1; #10 key=0; #10 key=1; #10 key=0; #10 key=1; #10 key=0; #10 key=1; #10 key=0; #10 key=1; #100 $stop; end

endmodule 2.对键盘检测文件进行综合和仿真。综合结果如图所示

图表 33

门级的原理图如下:

27

图表 34

3.在ise 工程中添加ucf 文件,完成管脚分配布局布线生成FPGA的bit文件,下载到实验板进行检测

图表 35

4.下载到实验板进行实验,然后修改至正常检测。

3.4 实验结果分析

1 .键盘检测仿真波形

28

图表 36

波形分析: 通过波形我们可以看出,在经过检测键盘按下的下降沿和上升沿得到上升标志和下降标志延迟了将近2个时钟周期,在键盘松手后,产生一个时钟周期的脉冲信号使灯的状太相反,如波形所示,本程序能较好的完成了键盘的检测。

2. 心得与体会:通过本次实验,使我进一步明白了键盘检测的原理,通过实验想象进行更直观的学习键盘检测。同时通过本次实验,让我充分感受到在进行实验板调试之前的功能仿真的重要性。信号的检测使我不会再滥用信号的边沿触发,纠正了我进行代码便携的一大误区,同时也加深理解了硬件语言和软件语言的区别。

3. 实验过程中存在的问题和解决方法。

1)综合无法通过提示混合信号赋值:大有可能是因为进行了在统一always模块当中进行了阻塞和非阻塞同时赋值的情况,这是不可综合的。

2)按键按下后,灯就一直亮着,只能按下复位键让其变暗:这是因为实验指导书的范例程序没有对灯点亮信号进行翻转,只要检测到一次键盘按下便进行点亮保持。

3)发现键盘有时感觉不灵敏:这是由于按键在按下的过程中会发生抖动的现象,加上实验开发板的时钟频率比较大,因此需要加上一段延迟才能更准确的消除抖动,因此本实验需要在后续的学习和实践中进一步的晚上,才能写出一个较完美的键盘检测消抖程序。

实验四 LCD数字秒表

29

4.1 实验目的

1. 学会比较大型的数字系统的设计方法和步骤 2. 掌握LCD的控制协议和时序工作状态 3. 掌握可综合代码的编写和仿真

4. 掌握利用状态机来描述接口协议和状态转移控制 5. 熟练掌握分频器的设计

6. 掌握整个系统设计的初步能力和方法

4.2 实验原理

1. LCD工作时序如下图所示,并有相对应的时间约束,由于本实验只用到写时序,因此只介绍读的工作时序。下图是整个LCD的写数据和命令的控制时许,在本实验中需要编写一个lcd_ctrl模块文件来描述此时序要求来发送数据。

图表 37

2. LCD工作控制原理,在本实验中需要将数据写道LCD的内部的寄存器当中,达到控制显示的要求。本实验开发板中由于选择四位的传送模式,因此须在初始化过程的最开始进行设定其中需要在开机后进行LCD初始化操作,然后再不断的进行数据传输扫描显示,初始过程可参考如下:

30


(ISE使用流程)逻辑设计实验(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:预防非正常上访工作方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: