实验二 FPGA使用Verilog HDL设计分频器

实验目的

  1. 掌握使用Vivado软件进行设计、综合、仿真、布线的方法。
  2. 掌握FPGA程序的下载方法。
  3. 掌握使用Verilog HDL设计分频器的方法。

实验要求

采用Verilog HDL语言设计分频器,实现以下功能:

  1. 输出时钟周期为1s的分频时钟信号;
  2. 通过LED灯或数码管显示秒数,可对9s内的秒数进行计数;
  3. 当按下复位按键时,重新开始计数。

对设计进行综合、仿真、布线、下载和测试。

实验过程

  1. 打开Vivado软件,新建一个工程。
  2. 新建设计文件,使用Verilog HDL语言设计程序,实现分频器功能。

代码如下:

我这个是通过一个数码管显示的

bash 复制代码
timescale 1ns / 1ps
module exp2(
    input clk,//时钟
    input rst,//复位
    output reg clk_out,//分频后
    output reg [7:0]out,//数码管位选和显示
);
parameter LW = 25000000;

reg [31:0]count;
reg [3:0]second;
always @(posedge clk or negedge rst) 
    begin
        if(!rst)
            begin 
                clk_out <= 0;
                count <= 0;
            end
        else
            if (count < LW - 1)
                begin
                    count <= count + 1;
                end
            else
                begin
                    count <= 0;
                    clk_out <= ~clk_out;
                end
    end
always @(negedge clk_out or negedge rst)
begin
	if (!rst)
		second <= 0;
	else
        	if (second < 9)
            	second <= second + 1;
        	else
            	second <= 0;
        case(second)
            0:out <= 8'b01111110;
            1:out <= 8'b00110000;
            2:out <= 8'b01101101;
            3:out <= 8'b01111001;
            4:out <= 8'b00110011;
            5:out <= 8'b01011011;
            6:out <= 8'b01011111;
            7:out <= 8'b01110000;
            8:out <= 8'b01111111;
            9:out <= 8'b01111011;
            default: out <= 0;
        endcase;
end
endmodule

仿真代码如下:

bash 复制代码
`timescale 1ns / 1ps

module exp2_t;
	
    reg clk;
    reg rst;
    always #10 clk=~clk;
    wire [7:0]out;
    wire clk_out;
    exp2 exptest(
    .clk(clk),
    .rst(rst),
    .clk_out(clk_out),
    .out(out)
    );
initial
    begin
        clk=0;
        rst=0;
        #4000
        rst=1;
    end


endmodule

实验结果

总结

本次实验中,将always块中的敏感事件写错了,经过仿真结果找出问题;在秒表计数的if-else语句中将计数的变量搞错,导致不能正确的实现秒表过一秒加一的操作,通过本次实验,我不仅掌握了使用Vivado软件进行综合、仿真、布线、下载和测试的方法,也加强了对Verilog HDL语言的掌握和应用能力。

相关推荐
nuoxin11414 小时前
GSV1011-富利威-HDMI芯片选型
arm开发·驱动开发·fpga开发·ffmpeg·射频工程
ChipCamp14 小时前
FPGA开发入门----1. Mux的三种写法,RTL的认知大提升!
fpga开发·时序逻辑·组合逻辑
XINVRY-FPGA1 天前
XCVP1802-2MSILSVC4072 AMD Xilinx Versal Premium Adaptive SoC FPGA
人工智能·嵌入式硬件·fpga开发·数据挖掘·云计算·硬件工程·fpga
9527华安2 天前
国产安路FPGA开发设计培训课程,提供开发板+工程源码+视频教程+技术支持
fpga开发·fpga·安路·视频教程·培训·安路fpga
UVM_ERROR2 天前
硬件设计实战:解决Valid单拍采样失效问题(附非阻塞赋值与时序对齐核心要点)
驱动开发·fpga开发·github·芯片
brave and determined2 天前
可编程逻辑器件学习(day36):从沙粒到智能核心:芯片设计、制造与封装的万字全景解析
fpga开发·制造·verilog·fpga·芯片设计·硬件设计·芯片制造
步达硬件3 天前
【FPGA】FPGA开发流程
fpga开发
我爱C编程3 天前
【仿真测试】基于FPGA的完整16QAM通信链路实现,含频偏锁定,帧同步,定时点,Viterbi译码,信道,误码统计
fpga开发·16qam·帧同步·卷积编码·viterbi译码·维特比译码·频偏锁定
s09071364 天前
ZYNQ DMA to UDP 数据传输系统设计文档
网络协议·fpga开发·udp
燎原星火*4 天前
QSPI IP核 基本参数
fpga开发