FPGA【Verilog实现不同速度流水灯】


前言

跟着课程学习fpga,题目要求如下:
让led灯按照亮0.25秒,灭0.5秒,亮0,75秒,灭1秒的状态循环亮灭。


一、设计思路

设计一个状态机用于完成状态的转换,第一种状态0全亮,经过0.25秒,进入下一个状态1全灭,经过0.5秒进入下一个状态,以此类推,知道最后一个状态3全灭1秒后,计数器清零,状态3转到0.
由于系统时钟频率是50HZ,这就意味着时间是0.000_000_02s,要想达到0.25秒,需要12,500,000次计数,由于计数器是从0开始计数的,因此应该计数到12,500,000-1,设置常量数为49999999,换算成二进制需至少26位。

二、实验步骤

代码如下(led.v):

module led_ctrl(
	input 		clk,
	input			rst_n,
	output reg [7:0] led
    );
	 
reg [31:0] cnt;//省事直接写了[31:0],应该是[25:0]
reg [1:0]  state;
//parameter counter = 500000000;
always@(posedge clk or negedge rst_n)begin
	if(!rst_n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值