名称:8路彩灯控制器basys2开发板ISE流水灯verilog代码(代码在文末下载)
软件:ISE
语言:Verilog
代码功能:
设计一个8路彩灯控制器,能在Basys2开发板上实际验证。
用8个LED代替八路彩灯,任一时刻,这8个LED有的亮有的不亮,这称为一种花型,再过一段时间,这8个LED又是另外一种亮暗分布,这就是另外一种花型。
控制器需要让6种花型循环出现。前面说的6种花型合在一起称为一套花型,要求最少有2套花型,使用一个开关来选择使用哪一个花型。
另外,同一套花型中,从一种花型变换到另外一种花型的速度最少有2种,也用开关来进行切换。
另外,数码管上要显示以下信息,现在是第几套花型,是第几种花型,序号可以从0开始,还要显示当前花型对应的16进制数。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在Basys2开发板验证,开发板如下,其他开发板可以修改管脚适配:
工程文件:
程序文件:
程序编译:
管脚分配:
RTL图:
部分代码展示:
`timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // 花型控制模块课 module control( input clk,//时钟 input reset,//复位 input SW1,//花型切换 output [7:0] LED,//LED灯 output [3:0] LED_type,//第几套花型 output [3:0] LED_num//第几种花型 ); //6种花型 reg [3:0] num1_cnt=4'd0; reg [3:0] num2_cnt=4'd0; //花型1计数 always@(posedge clk or posedge reset) if(reset)//复位 num1_cnt<=4'd0; else if(SW1==1)//花型1 if(num1_cnt>=4'd5)//0~5 num1_cnt<=4'd0; else num1_cnt<=num1_cnt+4'd1;//加1 else num1_cnt<=4'd0; //花型1计数 always@(posedge clk or posedge reset) if(reset)//复位 num2_cnt<=4'd0; else if(SW1==0)//花型2 if(num2_cnt>=4'd5)//0~5 num2_cnt<=4'd0; else num2_cnt<=num2_cnt+4'd1;//加1 else num2_cnt<=4'd0; //根据计数控制具体LED灯变化 reg [7:0] LED1=8'd0; always@(posedge clk or posedge reset) if(reset)//复位 LED1<=8'd0; else case(num1_cnt)//8个LED变化 4'd0:LED1<=8'b11100000; 4'd1:LED1<=8'b01110000; 4'd2:LED1<=8'b00111000; 4'd3:LED1<=8'b00011100; 4'd4:LED1<=8'b00001110; 4'd5:LED1<=8'b00000111; default:; endcase //根据计数控制具体LED灯变化 reg [7:0] LED2=8'd0; always@(posedge clk or posedge reset) if(reset)//复位 LED2<=8'd0; else case(num2_cnt)//8个LED变化 4'd0:LED2<=8'b00000111; 4'd1:LED2<=8'b00001110; 4'd2:LED2<=8'b00011100; 4'd3:LED2<=8'b00111000; 4'd4:LED2<=8'b01110000; 4'd5:LED2<=8'b11100000; default:; endcase assign LED=(SW1)?LED1:LED2;//SW1控制花型切换LED1还是LED2 assign LED_type=(SW1)?4'd1:4'd2;//第几套花型 assign LED_num=(SW1)?num1_cnt:num2_cnt;//第几种花型 endmodule
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=279
700