Xilinx FPGA【Verilog实现8状态定时间循环流水灯】

本文记录了一位初学者在使用VHDL设计8状态LED循环显示时遇到的问题。在第一个方法中,通过计数器成功实现了10us的状态切换,但在尝试使用使能信号EN控制状态循环时,代码陷入了死循环。作者提供了两种设计方案,但第二方案存在状态8显示异常的问题。测试代码和仿真结果显示了问题的具体表现。
摘要由CSDN通过智能技术生成


一、题目要求

题目:每隔10ms,让LED灯的一个8状态循环执行一次(每个状态的变化时间值小一点,方便测试,比如设置为10us)

二、实验步骤

1.底层代码

刚开始我直接想到的方法是规定了每个状态的开始时间,加上题目要求最好状态间的时间间隔最好为10us,所以正好可以设置准确的计数时间,其实和流水灯差不多。
代码如下:

`timescale 1ns / 1ps

module led8(
	input						clk,
	input 					    rst_n,
	input			[7:0]		user,
	output 		    reg			led
    );
reg [31:0]	cnt;
parameter counter = 500;
		
always@(posedge clk or negedge rst_n)begin
	if(!rst_n)begin
		cnt <= 1'b0;
		end 
	else if(cnt==500_000-1)begin
		cnt <= 1'b0;
		end
	else begin
		cnt <= cnt + 1'b1;
		end
	end
always@(posedge clk or negedge rst_n)begin
		if(!rst_n)begin
			led <= 1'b0;
			end 
		else if(cnt==counter-1)begin
			led <= user[7];
			end
		else if(cnt==2*counter-1)begin
			led <= user[6];
			end
		else if(cnt==3*counter<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值