FPGA學習(第10節)-模組的例化-Verilog層次化設計實現LED流水燈
一、回顧
之前我們學習了FPGA學習(第3節)-Verilog實現LED流水燈+計數器+狀態機+分頻
http://blog.csdn.net/fengyuwuzu0519/article/details/72457366
我們將狀態機、計數器、分配模組等放到了一個.V檔案中,實現了流水燈功能。程式碼如下:
module test(clk,rst_n,led);
input clk ;
input rst_n ;
output reg [3:0]led ;
reg[1:0] state;
reg [31:0] counter;
reg clk_show;
always @ ( posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
clk_show<=0;
counter<=0;
end
else
if(counter<49999999)
counter<=counter+1;
else
begin
counter<=0;
clk_show=~clk_show;
end
end
always @ ( posedge clk_show or negedge rst_n)
begin
if(!rst_n)
begin
led<=4'b1111;
state<=0;
end
else
begin
case(state)
0:begin
led<=4'b0111;
state<=1;
end
1:begin
led<=4'b1011;
state<=2;
end
2:begin
led<=4'b1101;
state<=3;
end
3:begin
led<=4'b1110;
state<=0;
end
default:
state<=0;
endcase
end
end
endmodule
看一下以上程式碼的RTL電路:
二、現在採用模組的例化,實現層次化設計。
(1)分為三個.v檔案來實現。
第一個是頂層檔案top.v,裡面只是負責例化模組,並連線。
第二個是分頻模組freq.v,裡面負責分頻產生1秒的時鐘。
第三個是LED狀態機模組led.v,實現LED的操作。
(2)框圖
(3)程式碼實現
top.v(負責例化子模組,只進行連線 wire)
module top(clk,rst_n,led);
input clk ;
input rst_n ;
output [3:0]led ;
wire clk_show;
freq freq(
.clk(clk),
.rst_n(rst_n),
.clk_show(clk_show)
);
led(
.clk(clk_show),
.rst_n(rst_n),
.led(led)
);
endmodule
freq.v
module freq(clk,rst_n,clk_show);
input clk ;
input rst_n ;
output reg clk_show;
reg [31:0] counter;
always @ ( posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
clk_show<=0;
counter<=0;
end
else
if(counter<49999999)
counter<=counter+1;
else
begin
counter<=0;
clk_show=~clk_show;
end
end
endmodule
led.v
module led(clk,rst_n,led);
input clk ;
input rst_n ;
output reg [3:0]led ;
reg[1:0] state;
always @ ( posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
led<=4'b1111;
state<=0;
end
else
begin
case(state)
0:begin
led<=4'b0111;
state<=1;
end
1:begin
led<=4'b1011;
state<=2;
end
2:begin
led<=4'b1101;
state<=3;
end
3:begin
led<=4'b1110;
state<=0;
end
default:
state<=0;
endcase
end
end
endmodule
看下RTL圖:
相關文章
- FPGA 學習之路:verilog學習第5天FPGA
- ARM學習之GPIO實現流水燈
- FPGA排序模組與verilog實現【含原始碼!!!】FPGA排序原始碼
- 流水燈實現
- Selenium學習第三天--模組化設計用例
- 用函式實現模組化程式設計習題函式程式設計
- Verilog設計技巧例項及實現
- node學習筆記第八節:模組化筆記
- 基於EP4CE6F17C8的FPGA流水燈例項FPGA
- FPGA筆記[2]-撥碼開關控制LED燈FPGA筆記
- 用函式實現模組化程式設計一函式程式設計
- 用函式實現模組化程式設計二函式程式設計
- 用函式實現模組化程式設計三函式程式設計
- W5500通過上位機控制實現調節LED燈帶的亮度
- 把學習遊戲化-----遊戲化程式設計學習遊戲程式設計
- 順序賦值的方式實現流水燈賦值
- iOS 元件化/模組化架構設計實踐iOS元件化架構
- 計算機的層次化架構計算機架構
- 51微控制器實現流水燈
- 【SQL 學習】層次化查詢之CONNECT BY 和 START WITHSQL
- FPGA程式設計從零開始 使用VerilogFPGA程式設計
- 設計模式學習-使用go實現單例模式設計模式Go單例
- Java模組化的國際化實現- GunnarJava
- 模組化實現的好處
- 【webpack進階】前端執行時的模組化設計與實現Web前端
- 【強化學習】強化學習的基本概念與程式碼實現強化學習
- node模組化之require學習UI
- webpack模組化學習記錄Web
- 如何實現css模組化CSS
- webpack模組化實現探究Web
- JS模組化程式設計JS程式設計
- javascript 模組化程式設計JavaScript程式設計
- verilog使用Mealy電路實現交通燈
- 自動化測試平臺設計與實現(二、自動化測試用例物件設計實現、關鍵字物件設計與實現)物件
- HDL/FPGA學習筆記八:verilog中task與function的使用FPGA筆記Function
- 微控制器小白學習之路(四)---led燈的閃爍
- 1、51微控制器實現LED燈的閃爍
- 設計模式學習(一)單例模式的幾種實現方式設計模式單例