• 方案介紹
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

8路彩燈控制器basys2開發(fā)板ISE流水燈verilog代碼

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

名稱:8路彩燈控制器basys2開發(fā)板ISE流水燈verilog代碼(代碼在文末下載)

軟件:ISE

語(yǔ)言:Verilog

代碼功能:

設(shè)計(jì)一個(gè)8路彩燈控制器,能在Basys2開發(fā)板上實(shí)際驗(yàn)證。

用8個(gè)LED代替八路彩燈,任一時(shí)刻,這8個(gè)LED有的亮有的不亮,這稱為一種花型,再過一段時(shí)間,這8個(gè)LED又是另外一種亮暗分布,這就是另外一種花型。

控制器需要讓6種花型循環(huán)出現(xiàn)。前面說的6種花型合在一起稱為一套花型,要求最少有2套花型,使用一個(gè)開關(guān)來選擇使用哪一個(gè)花型。

另外,同一套花型中,從一種花型變換到另外一種花型的速度最少有2種,也用開關(guān)來進(jìn)行切換。

另外,數(shù)碼管上要顯示以下信息,現(xiàn)在是第幾套花型,是第幾種花型,序號(hào)可以從0開始,還要顯示當(dāng)前花型對(duì)應(yīng)的16進(jìn)制數(shù)。

FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com

本代碼已在Basys2開發(fā)板驗(yàn)證,開發(fā)板如下,其他開發(fā)板可以修改管腳適配:

basys2.png

工程文件:

d1342339-f51f-4c19-b4e9-cb76d87c98e8.png

程序文件:

6d228238-3ae6-4535-8548-da4e4ea444d4.png

程序編譯:

5d36c9ff-27a0-41df-9528-8f8ea0a9e287.png

管腳分配:

f3e33e3f-de93-4d40-aa94-b91cbcf19d8a.png

RTL圖:

f9d57d09-a71a-4f07-9134-67928083dd83.png

部分代碼展示:

`timescale?1ns?/?1ps
//////////////////////////////////////////////////////////////////////////////////
//?花型控制模塊課
module?control(
????input?clk,//時(shí)鐘
????input?reset,//復(fù)位
????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計(jì)數(shù)
always@(posedge?clk?or?posedge?reset)
if(reset)//復(fù)位
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計(jì)數(shù)
always@(posedge?clk?or?posedge?reset)
if(reset)//復(fù)位
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;
//根據(jù)計(jì)數(shù)控制具體LED燈變化
reg?[7:0]?LED1=8'd0;
always@(posedge?clk?or?posedge?reset)
if(reset)//復(fù)位
LED1<=8'd0;
else
case(num1_cnt)//8個(gè)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
//根據(jù)計(jì)數(shù)控制具體LED燈變化
reg?[7:0]?LED2=8'd0;
always@(posedge?clk?or?posedge?reset)
if(reset)//復(fù)位
LED2<=8'd0;
else
case(num2_cnt)//8個(gè)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

點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=279

相關(guān)推薦