簡(jiǎn)單組合時(shí)序電路設計
要求: 完成占空比(高電平占一個(gè)時(shí)鐘周期的比例)為0.25的8分頻電路模塊的Verilog設計,并且設計一個(gè)仿真測試用的Verilog程序,從時(shí)序上驗證分頻電路模塊的正確性。
本文引用地址:http://dyxdggzs.com/article/201808/385213.htm整數分頻器的設計原理
1.1 偶數倍分頻
偶數分頻器的實(shí)現非常簡(jiǎn)單,通過(guò)計數器計數就完全可以實(shí)現。如進(jìn)行N倍偶數分頻,就可以通過(guò)由待分頻的時(shí)鐘觸發(fā)計數器計數,當計數器從0計數到N/2-1時(shí),輸出時(shí)鐘進(jìn)行翻轉,并給計數器一個(gè)復位信號,以使下一個(gè)時(shí)鐘從零開(kāi)始計數。以此循環(huán),就可以實(shí)現任意的偶數分頻。
1.2 奇數倍分頻
奇數倍分頻有兩種實(shí)現方法,其中之一完全可以通過(guò)計數器來(lái)實(shí)現,如進(jìn)行三分頻,就可通過(guò)待分頻時(shí)鐘上升沿觸發(fā)計數器來(lái)進(jìn)行模三計數,當計數器計數到鄰近值時(shí)進(jìn)行兩次翻轉。比如可以在計數器計數到1時(shí),輸出時(shí)鐘進(jìn)行翻轉,計數到2時(shí)再次進(jìn)行翻轉。這樣,就在計數值鄰近的1和2進(jìn)行了兩次翻轉。如此便實(shí)現了三分頻,其占空比為1/3或2/3。
如果要實(shí)現占空比為50%的三分頻時(shí)鐘,則可通過(guò)待分頻時(shí)鐘下降沿觸發(fā)計數,并以和上升沿同樣的方法計數進(jìn)行三分頻,然后對下降沿產(chǎn)生的三分頻時(shí)鐘和上升沿產(chǎn)生的時(shí)鐘進(jìn)行相或運算。即可得到占空比為50%的三分頻時(shí)鐘。這是奇數分頻的第三種方法。這種方法可以實(shí)現任意的奇數分頻。如將其歸類(lèi)為一般的方法:對于實(shí)現占空比為50%的N倍奇數分頻,首先要進(jìn)行上升沿觸發(fā)以進(jìn)行模N計數,計數選定到某一個(gè)值再進(jìn)行輸出時(shí)鐘翻轉,然后過(guò)(N-1)/2再次進(jìn)行翻轉,就可得到一個(gè)占空比為50%的奇數n分頻時(shí)鐘。再同時(shí)進(jìn)行下降沿觸發(fā)的模N計數,當其到達與上升沿觸發(fā)輸出時(shí)鐘翻轉選定值相同時(shí),再進(jìn)行輸出時(shí)鐘翻轉,同樣,經(jīng)過(guò)(N-1)/2時(shí),輸出時(shí)鐘再次翻轉以生成占空比為50%的奇數n分頻時(shí)鐘。將這兩個(gè)占空比為50%的n分頻時(shí)鐘相或運算,就可以得到占空比為50%的奇數n分頻時(shí)鐘。
3、 實(shí)驗步驟和程序
`TImescale 1ns / 1ps
module odd_division(clk,rst,count,clk_odd);
input clk,rst;
output clk_odd;
output[3:0] count;
reg clk_odd;
reg[3:0] count;
parameter N = 8;
always @ (posedge clk)
if(! rst)
begin
count 《= 1‘b0;
clk_odd 《= 1’b0;
end
else
if ( count 《 N/4-1)
begin
count 《= count + 1‘b1;
clk_odd 《= 1’b1;
end
else if (count 《 N/2-1)
begin
count 《= count + 1‘b1;
clk_odd 《= 1’b0;
end
else
begin
count 《= 1‘b0;
end
endmodule
test file:
`TImescale 1ns / 1ps
module test2;
// Inputs
reg clk;
reg rst;
// Outputs
wire [3:0] count;
wire clk_odd;
odd_division uut (
.clk(clk),
.rst(rst),
.count(count),
.clk_odd(clk_odd)
);
always #10 clk=~clk;
iniTIal begin
clk = 0;
rst = 0;
#100;
#10 rst=1;
end
endmodule
4、 測試數據記錄和結果分析
5、 實(shí)驗結論和體會(huì )
注意事項:
1.請獨立完成實(shí)驗和報告,紙質(zhì)報告每周交一次。
2.每次實(shí)驗時(shí)請在C盤(pán)根目錄中創(chuàng )建一個(gè)以本人班級學(xué)號如BX10040322命名的文件夾,在這文件夾下創(chuàng )建工程,最后壓縮這個(gè)文件夾并上傳后刪除。
3.實(shí)驗成績(jì)分為兩部分:一為實(shí)驗現場(chǎng)操作分(包括程序編寫(xiě)、得出結論等),二為報告分。
4.實(shí)驗步驟和程序分為三部分:一為基本步驟,二為程序流程圖(也可以為算法的文字或公式說(shuō)明)或狀態(tài)圖,三為程序源代碼(可以不用全寫(xiě),只寫(xiě)出關(guān)鍵部分的程序)及其說(shuō)明。
5.實(shí)驗結論和體會(huì ):一為實(shí)驗結論,二為討論當前設計的不足及其改進(jìn)設想。
6.測試數據記錄和結果分析:Verilog程序綜合出來(lái)的RTL圖(電路很復雜時(shí)不做要求);時(shí)序仿真結果(必備),可以抓圖后打印出來(lái)貼在報告上,但必須對圖里的結果有詳細的文字說(shuō)明??蓞⒖家韵掳咐袷綄?xiě)

圖1比較器模塊RTL圖
圖1為程序綜合出來(lái)的四個(gè)比較器的RTL圖,當計數值小于ROM數據時(shí),比較器輸出高電平;當計數值大于ROM數據時(shí),比較器則輸出低電平。比較器的輸出為步進(jìn)的四相輸入端提供PWM波形,從而達到PWM控制。
比較器的輸入端:
a:對應PWM _ROM模塊的輸出信號。
b:對應十六進(jìn)制計數器(PWM計數器)的輸出信號。
比較器的輸出端:
agb:輸出a端信號與b端信號的比較值。

圖2比較器模塊仿真波形圖
仿真結果說(shuō)明:
當a端信號大于b端信號時(shí),比如a為15而b為0時(shí),輸出端agb輸出高電平信號“1”;反之,輸出端agb輸出低電平信號“0”。
評論