循环流水灯设计Verilog代码Vivado仿真

名称:循环流水灯设计Verilog代码Vivado仿真(文末获取)

软件:Vivado

语言:Verilog

代码功能:

任务:设计一个可以循环移动的流水灯,灯总数

为8盏,具体要求如下:

-1、5亮,其余灭,右移三次后全灭

-4、8亮,其余灭,左移三次后全灭

-4、5亮,其余灭,各向两边移三次后全灭

-1、8亮,其余灭,各向中间移三次后全灭

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

整体仿真图

分频模块仿真

模20计数器仿真

译码电路仿真

部分代码展示:

`timescale 1ns / 1ps
//流水灯
module water_LED(
input clk_48M,//48MHz
input RST,//复位
output [7:0]LED//8个共阳极LED
    );
wire clk_1;
wire [4:0] state;//状态值
//分频电路
fengping i_fengping(
. clk(clk_48M),//48MHz
. clk_1(clk_1)//1Hz信号
    );
//模20计数器
mod_20 i_mod_20(
. clk_1(clk_1),//1Hz信号
. RST(RST),//复位
. state(state)//状态值
    );
//译码电路
decode i_decode(
. state(state),//状态值
. LED(LED)//共阳极LED
    );
endmodule
源代码

 扫描文章末尾的公众号二维码

基于FPGA(Field-Programmable Gate Array)的彩流水灯控制器设计通常涉及到硬件描述语言Verilog或 VHDL 的编程。下面是简化的Verilog代码示例,用于控制八个LED流水灯效果: ```verilog module led_controller ( input wire clk, // 主时钟 input wire rst, // 重启信号 input wire[7:0] data_in, // 输入数据,表示LED的状态 output reg [7:0] led_out // 输出驱动LED状态 ); reg [7:0] counter; always @(posedge clk or posedge rst) begin if (~rst) begin counter <= 0; // 重置计数器 led_out <= 8'b0; // 清除所有LED end else if (clk'event and clk.posedge) begin counter <= counter + 1; // 计数器加一 led_out[counter % 8] = data_in; // 更新对应位置的LED end end // LED驱动部分,假设每个LED占用一个IO口 assign led[0:7] = led_out; endmodule ``` 在这个例子中: - `clk`是系统时钟输入; - `rst`是一个复位信号,当有效时清零计数器和LED输出; - `data_in`是输入的数据,每一位代表一个LED的状态; - `led_out`是模拟的LED输出,通过模运算更新LED的状态。 接下来是Vivado仿真步骤: 1. 导入项目:在Vivado环境中,创建新项目并导入Verilog文件。 2. 设计输入:配置仿真所需的时钟频率、复位时间和输入数据序列。 3. 创建波形视图:设置触发事件,比如时钟上升沿,以便观察计数器和LED的变化过程。 4. 运行仿真:点击“Run Simulation”按钮开始模拟,在波形视图中查看LED是否按照预期流水移动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值