EDA课程实验:《数字逻辑电路》实验五___基于Minisys 平台 VIVADO工具与Verilog语言

《数字逻辑电路》实验五         时序逻辑电路设计(二)

目录

《数字逻辑电路》实验五         时序逻辑电路设计(二)

一、实验目的

二、实验内容

三、代码与截图

源代码1:triled_204.v

测试代码1:triled_204_sim.v

引脚约束1:triled_204.xdc

仿真截图1:

引脚锁定截图1:

运行完成1:

源代码2:hexseg_204.v

测试代码2:hexseg_204_sim.v

引脚约束2:hexseg_204.xdc

仿真截图2:

引脚锁定截图2:

运行完成2:

源代码3:topdigit_204.v, hexseg8_204.v

仿真代码3:hexseg8_204_sim.v

引脚约束3: hexseg8_204.xdc

仿真截图3:

引脚锁定截图3:

运行完成3:

四、下板验证结果


一、实验目的

        学会设计计数器;学会控制 1 位 7 段数码管的显示;  8 位 7 段数码管的显示,巩固计数器的设计。

二、实验内容

        (1)使用 Verilog HDL 实现一个 3 位的模8加1(或减 1 )计数器 triled,要求每 1 秒加一次(或减一次) 1 (利用 2.7.1节的分频器);(见2.7.3)

        (2)使用 Verilog HDL 实现一个 1 位 7 段数码管的编码器 hexseg,可以在数码管上显示 1 位16 进制数,下载到板子上进行验证;信号对应如下:输入 hex[3]-hex[0]对应 SW[3]-SW[0], 表明输入的 4 位二进制数,输出 segs[6]-segs[0]分别对应数码管的 CA,CB,CC,CD,CE,CF,CG 段,输入 en 接 SW23, 输出 an 接板上数码管使能引脚 A0,an 始终等于 en 来控制第一个数 码管的显示和不显示。 请根据第一章中图 1-7 自行列出各个数字的 7 段数码管真值表,并 按照真值表设计 7 段数码管编码器。要注意,数码管哪一段量,该段对应的信号要为低电平(见2.8.1)

        (3)使用 Verilog HDL 和上一题设计的 hexseg实现一个 8 位十六进制数显示的数码管显示控制模块 hexseg8,下载到板验证;要求能同时稳 定地显示各个位的数字,并能定义 8 位数码管哪些位要显示,哪些位不需要显示。该模块有 8 个 4 位的输入 hex0[3:0],hex1[3:0],hex2[3:0],hex3[3:0],hex4[3:0],hex5[3:0],hex6[3:0], hex7[3:0]分别输入 8 个 4 位二进制数,一个 8 位的输入 en[7:0]表明哪一位数码管需要显示(低 电平有效,比如只需要低 4 位显示,高 4 位不用,这 en=11110000B),1 个 7 位的输出数码 管段码的 segs[6:0]和一个 8 位的数码管使能端 an[7:0] (低电平有效),另外,因为需要一个计数器产生 2ms 一次的数码管切换触发信号,因此输入还需要有 clk 和 reset。(见2.8.2)

三、代码与截图


源代码1:triled_204.v

`timescale 1ns / 1ps
//
module triled_204(
    input clk,//外部 100MHz 时钟信号
    input rst,//清 0 信号
    output reg [2:0] c1,//模 8 计数器
    output [2:0] c2// ~C1
);
  wire clk1hz; //降频后的 1 秒时钟信号
  assign c2 = ~c1;
  // 实例化降频器 
  clock_div_204 U(.clk(clk),.reset(reset),.clkout(clk1hz));
  always @(posedge clk1hz or posedge rst)
  //仿真时改为always @(posedge clk or posedge rst)  
  begin
      if (rst) 
          c1 <= 3'b000;
      else begin
          if (c1 == 3'b111) 
              c1 <= 3'b000;
          else 
              c1 <= c1 + 1;
      end
  end
endmodule

测试代码1:triled_204_sim.v

`timescale 1ns / 1ps
//
module triled_204_sim();
     reg clk;
     reg rst;
     wire [2:0] c1;
     wire [2:0] c2;
     triled_204 U(.clk(clk),.rst(rst),.c1(c1),.c2(c2));
    //方便仿真源文件中改为always @(posedge clk or posedge rst) 
    always #5 clk = ~clk;
    initial begin
        clk = 0;
        rst = 1;
        #10 rst = 0;
        #100 rst = 1;
        #103 rst = 0;
        #1000 $finish;
    end
endmodule

引脚约束1:triled_204.xdc

set_property PACKAGE_PIN Y18 [get_ports clk]
set_property PACKAGE_PIN P20 [get_ports rst]
set_property PACKAGE_PIN D22 [get_ports {c1[2]}]
set_property PACKAGE_PIN E22 [get_ports {c1[1]}]
set_property PACKAGE_PIN A21 [get_ports {c1[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {c1[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {c1[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {c1[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {c2[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {c2[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {c2[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports rst]
set_property PACKAGE_PIN L15 [get_ports {c2[2]}]
set_property PACKAGE_PIN L14 [get_ports {c2[1]}]
set_property PACKAGE_PIN J17 [get_ports {c2[0]}]

仿真截图1:

引脚锁定截图1:

  • 30
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值