实验目的

  1. 熟练掌握时序逻辑设计规范
  2. 掌握Verilog HDL时序逻辑模块的设计和仿真。
  3. 掌握开发板上基本输出资源的使用方法。
  4. 掌握测试和错误修改方法。

预习要求

  1. 了解EDA数字系统设计的基本流程。
  2. 了解时序逻辑过程块设计的基本规范和模型
  3. 了解七段管的工作特性。
  4. 了解组合逻辑和时序逻辑电路设计的主要特性和区别。

实验原理

  1. SW上拨为输出高电平、下拨为输出低电平
  2. KEY0-KEY3正常情况下输出高电平,按下输出低电平,松开按键恢复到弹起状态输出高电平
  3. 7段数码管:HEX0[6:0]—-HEX7[6:0],每个7段管信号对应数码管,6—-0,低电平时发光,高电平不亮。
  4. 分频电路参考:由50MHz信号,经过分频变成1Hz。原理:0-25000000计数,满2500万后新的时钟CLK1反转,计数归零,从0开始重新计数到2500万后,新时钟再反转,使得CLK1一个周期内包含2500万*2个CLOCK_50(50Mhz)时钟周期,为1hz
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    module divclk1hz(reset,clk50,clk1);
    input clk50,reset;//clk50为输入50Mhz信号,reset为复位信号
    output reg clk1;//新产生的1hz信号
    integer i=0;//50Mhz频率下,周期计数器
    always@(posedge clk50)
    begin
    if(!reset) begin i=0;end
    else begin
    if(i==25000000) begin i=0; clk1=~clk1;end
    else i=i+1;
    end
    end
    endmodule

实验内容

  1. 字符移位:在8个7段管上显示HELLO _(可以显示下划线或不亮也可),每隔1秒钟,字符序列左移或右移一个七段管的位置。系统外部时钟50Mhz。左/右移位可以通过一个波动开关sw0来控制。
  2. 计时器:在6个七段管上分别显示 小时(0-23或11)、分(0-59)、秒(0-59),各占2个管。外部时钟50Mhz。可以用按键来产生一个复位信号key,当按键按下立刻(异步)将时间复位成0小时、0分、0秒重新开始计时
  3. 扩展:将时分秒计时器,变成可调的计时器。可以分别对小时、分、秒设定初始值。
    设定的方法可以采用,从外部输入一个值,比如小时可以从5开始;也可以通过按键把小时当前的值增加或者减少来实现值的调整。
  4. 在文件代码综合测试过程中,总结错误原因,掌握错误定位和改进的方法。

实验要求

  1. 按照上面的提示完善报告
  2. 将程序编译过程中出现的主要错误及解决方案进行总结
  3. 掌握和练习数字系统的分析步骤,并将一些核心步骤进行记录
  4. 将编写的程序与仿真结果进行记录