名称:电器控制电路的设计和实现Verilog代码Vivado basys3开发板(文末获取)
软件:Vivado
语言:Verilog
代码功能:
继电器控制电路的设计和实现
1设计目标
实现使用8个LEC灯当作继电器并进行控制。
2.设计内容
如下图,8个LED中近两个LED作为一组同时亮,以切换速率1s到切换到下一组循环,利用一个按键切换频率从1s换到2s
1.流水灯的方向向左或向右都可以
2.管脚定义实验时给出
本代码已在basys3开发板验证,basys3开发板如下,其他开发板可以修改管脚适配:
1. 工程文件
2. 程序文件
3. 程序编译
4. 管脚定义
5. Testbench
6. 仿真图
部分代码展示:
`timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2019/11/23 16:26:11 // Design Name: // Module Name: basys3_led // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // // module basys3_led( input clk_100M, input reset_p,//BTNU input switch,//SW0 output [7:0] led ); //100M时钟分频到1Hz和0.5Hz reg [31:0] count=32'd0; reg clk_1Hz=0;//1Hz reg clk_05Hz=0;//0.5Hz always@(posedge clk_100M or posedge reset_p) if(reset_p) count<=32'd0; else if(count>=32'd100_000_000)//100M时钟计数100_000_000得1s count<=32'd0; else count<=count+32'd1; always@(posedge clk_100M or posedge reset_p) if(reset_p) clk_1Hz<=0; else if(count>=32'd50_000_000)//100M时钟计数100_000_000得1s clk_1Hz<=1;//得到1Hz时钟 else clk_1Hz<=0; always@(posedge clk_1Hz) clk_05Hz<=~clk_05Hz;//2分频得到0.5Hz wire clk_work;//工作时钟 assign clk_work=switch?clk_1Hz:clk_05Hz;//工作时钟在switch==1时为1Hz(1s),为0时为0.5Hz(2s) reg [7:0] LED_buf=8'b11000000; always@(posedge clk_work or posedge reset_p) if(reset_p) LED_buf<=8'b11000000; else LED_buf<={LED_buf[0],LED_buf[7:1]};//循环右移 assign led=LED_buf;//输出led endmodule
源代码
扫描文章末尾的公众号二维码