2FPGA时序逻辑电路设计

本文档详细介绍了如何使用Verilog HDL设计一个LED闪烁电路,包括新建工程、编写描述文件、测试脚本以及进行功能仿真。在设计中,利用计数器实现LED灯每隔一定时间翻转状态。测试脚本创建了一个20ns周期的时钟,并进行了功能仿真以验证设计的正确性。在仿真过程中,发现并修正了时间参数的错误,确保了设计符合预期。
摘要由CSDN通过智能技术生成

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

1新建工程

和之前一样新建工程
在这里插入图片描述
在这里插入图片描述

2编写描述文件

和上篇一样
在本工程目录下的 rtl 文件夹下新建 verilog file 文件并以 led_flash.v 保存。

module led_flash(
CLK50M,
Rst_n,
led);
input CLK50M;
input Rst_n;
output reg[3:0]led;
reg[24:0]cnt;
always@(posedge CLK50M or negedge Rst_n)
if(!Rst_n)
	cnt<=25'd0;
else if(cnt==25'd24_999_999)
	cnt<=25'd0;
else
	cnt<=cnt+1'b1;
always@(posedge CLK50M or negedge Rst_n)
if(!Rst_n)
	led<=4'b1111;
else if(cnt==25'd24_999_999)
	led<=~led;
else
	led<=led;
endmodule

进行验证
在这里插入图片描述
逻辑图如下

3编写测试脚本

为了测试仿真编写测试激励文件,新建 led_flash_tb.v 文件并输入以下内容再次进行分析
和综合直至没有错误以及警告,保存到 testbench 文件夹下。这里生成了一个周期为 20ns 的时钟 clk,并且例化了需要测试的led_flash_tb.v

`timescale 1ns/1ns
`define clock_period 20
module led_flash_tb;
 reg CLK50M;
 reg Rst_n;
 
 wire [3:0]led;
 led_flash led_flash0(
 .CLK50M(CLK50M),
 .Rst_n(Rst_n),
 .led(led)
 );
 
 initial CLK50M = 1;
 always #(`clock_period/2) CLK50M = ~CLK50M;
 
 initial begin
 Rst_n=0;
 #(`clock_period*20+1) Rst_n=1;
 #(`clock_period*25000000*5) ;
 $stop;
 end
 
endmodule

3功能仿真

设置nativelink脚本
在这里插入图片描述
使用RTL Simulation
在这里插入图片描述
发现比设计的短实际上,不能*5,将led_flash_tb下列式子修改重新仿真
在这里插入图片描述
在这里插入图片描述
然后restart,后run all
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
全编译

分配引脚

建立自动化脚本,在prj文件夹中
在这里插入图片描述
,

在这里插入图片描述
在这里插入图片描述
全编译后将文件下载入板子

补充实验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
位拼接
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值