电器控制电路的设计和实现Verilog代码Vivado basys3开发板
名称:电器控制电路的设计和实现Verilog代码Vivado basys3开发板
软件:Vivado
语言:Verilog
代码功能:
继电器控制电路的设计和实现
1设计目标
实现使用8个LEC灯当作继电器并进行控制。
2.设计内容
如下图,8个LED中近两个LED作为一组同时亮,以切换速率1s到切换到下一组循环,利用一个按键切换频率从1s换到2s

1.流水灯的方向向左或向右都可以
2.管脚定义实验时给出
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在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代码文件(付费下载):
![]()
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 电器控制电路的设计和实现Verilog代码Vivado basys3开发板
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 电器控制电路的设计和实现Verilog代码Vivado basys3开发板