新聞中心

EEPW首頁(yè) > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 簡(jiǎn)單組合時(shí)序電路設(shè)計(jì)

簡(jiǎn)單組合時(shí)序電路設(shè)計(jì)

作者: 時(shí)間:2018-08-03 來(lái)源:網(wǎng)絡(luò) 收藏

要求: 完成占空比(高電平占一個(gè)時(shí)鐘周期的比例)為0.25的8分頻電路模塊的Verilog設(shè)計(jì),并且設(shè)計(jì)一個(gè)仿真測(cè)試用的Verilog程序,從時(shí)序上驗(yàn)證分頻電路模塊的正確性。

本文引用地址:http://m.butianyuan.cn/article/201808/385213.htm

整數(shù)分頻器的設(shè)計(jì)原理

1.1 偶數(shù)倍分頻

偶數(shù)分頻器的實(shí)現(xiàn)非常簡(jiǎn)單,通過(guò)計(jì)數(shù)器計(jì)數(shù)就完全可以實(shí)現(xiàn)。如進(jìn)行N倍偶數(shù)分頻,就可以通過(guò)由待分頻的時(shí)鐘觸發(fā)計(jì)數(shù)器計(jì)數(shù),當(dāng)計(jì)數(shù)器從0計(jì)數(shù)到N/2-1時(shí),輸出時(shí)鐘進(jìn)行翻轉(zhuǎn),并給計(jì)數(shù)器一個(gè)復(fù)位信號(hào),以使下一個(gè)時(shí)鐘從零開(kāi)始計(jì)數(shù)。以此循環(huán),就可以實(shí)現(xiàn)任意的偶數(shù)分頻。

1.2 奇數(shù)倍分頻

奇數(shù)倍分頻有兩種實(shí)現(xiàn)方法,其中之一完全可以通過(guò)計(jì)數(shù)器來(lái)實(shí)現(xiàn),如進(jìn)行三分頻,就可通過(guò)待分頻時(shí)鐘上升沿觸發(fā)計(jì)數(shù)器來(lái)進(jìn)行模三計(jì)數(shù),當(dāng)計(jì)數(shù)器計(jì)數(shù)到鄰近值時(shí)進(jìn)行兩次翻轉(zhuǎn)。比如可以在計(jì)數(shù)器計(jì)數(shù)到1時(shí),輸出時(shí)鐘進(jìn)行翻轉(zhuǎn),計(jì)數(shù)到2時(shí)再次進(jìn)行翻轉(zhuǎn)。這樣,就在計(jì)數(shù)值鄰近的1和2進(jìn)行了兩次翻轉(zhuǎn)。如此便實(shí)現(xiàn)了三分頻,其占空比為1/3或2/3。

如果要實(shí)現(xiàn)占空比為50%的三分頻時(shí)鐘,則可通過(guò)待分頻時(shí)鐘下降沿觸發(fā)計(jì)數(shù),并以和上升沿同樣的方法計(jì)數(shù)進(jìn)行三分頻,然后對(duì)下降沿產(chǎn)生的三分頻時(shí)鐘和上升沿產(chǎn)生的時(shí)鐘進(jìn)行相或運(yùn)算。即可得到占空比為50%的三分頻時(shí)鐘。這是奇數(shù)分頻的第三種方法。這種方法可以實(shí)現(xiàn)任意的奇數(shù)分頻。如將其歸類為一般的方法:對(duì)于實(shí)現(xiàn)占空比為50%的N倍奇數(shù)分頻,首先要進(jìn)行上升沿觸發(fā)以進(jìn)行模N計(jì)數(shù),計(jì)數(shù)選定到某一個(gè)值再進(jìn)行輸出時(shí)鐘翻轉(zhuǎn),然后過(guò)(N-1)/2再次進(jìn)行翻轉(zhuǎn),就可得到一個(gè)占空比為50%的奇數(shù)n分頻時(shí)鐘。再同時(shí)進(jìn)行下降沿觸發(fā)的模N計(jì)數(shù),當(dāng)其到達(dá)與上升沿觸發(fā)輸出時(shí)鐘翻轉(zhuǎn)選定值相同時(shí),再進(jìn)行輸出時(shí)鐘翻轉(zhuǎn),同樣,經(jīng)過(guò)(N-1)/2時(shí),輸出時(shí)鐘再次翻轉(zhuǎn)以生成占空比為50%的奇數(shù)n分頻時(shí)鐘。將這兩個(gè)占空比為50%的n分頻時(shí)鐘相或運(yùn)算,就可以得到占空比為50%的奇數(shù)n分頻時(shí)鐘。

3、 實(shí)驗(yàn)步驟和程序

`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、 測(cè)試數(shù)據(jù)記錄和結(jié)果分析

5、 實(shí)驗(yàn)結(jié)論和體會(huì)

注意事項(xiàng):

1.請(qǐng)獨(dú)立完成實(shí)驗(yàn)和報(bào)告,紙質(zhì)報(bào)告每周交一次。

2.每次實(shí)驗(yàn)時(shí)請(qǐng)?jiān)贑盤根目錄中創(chuàng)建一個(gè)以本人班級(jí)學(xué)號(hào)如BX10040322命名的文件夾,在這文件夾下創(chuàng)建工程,最后壓縮這個(gè)文件夾并上傳后刪除。

3.實(shí)驗(yàn)成績(jī)分為兩部分:一為實(shí)驗(yàn)現(xiàn)場(chǎng)操作分(包括程序編寫、得出結(jié)論等),二為報(bào)告分。

4.實(shí)驗(yàn)步驟和程序分為三部分:一為基本步驟,二為程序流程圖(也可以為算法的文字或公式說(shuō)明)或狀態(tài)圖,三為程序源代碼(可以不用全寫,只寫出關(guān)鍵部分的程序)及其說(shuō)明。

5.實(shí)驗(yàn)結(jié)論和體會(huì):一為實(shí)驗(yàn)結(jié)論,二為討論當(dāng)前設(shè)計(jì)的不足及其改進(jìn)設(shè)想。

6.測(cè)試數(shù)據(jù)記錄和結(jié)果分析:Verilog程序綜合出來(lái)的RTL圖(電路很復(fù)雜時(shí)不做要求);時(shí)序仿真結(jié)果(必備),可以抓圖后打印出來(lái)貼在報(bào)告上,但必須對(duì)圖里的結(jié)果有詳細(xì)的文字說(shuō)明??蓞⒖家韵掳咐袷綄?/p>

圖1比較器模塊RTL圖

圖1為程序綜合出來(lái)的四個(gè)比較器的RTL圖,當(dāng)計(jì)數(shù)值小于ROM數(shù)據(jù)時(shí),比較器輸出高電平;當(dāng)計(jì)數(shù)值大于ROM數(shù)據(jù)時(shí),比較器則輸出低電平。比較器的輸出為步進(jìn)的四相輸入端提供PWM波形,從而達(dá)到PWM控制。

比較器的輸入端:

a:對(duì)應(yīng)PWM _ROM模塊的輸出信號(hào)。

b:對(duì)應(yīng)十六進(jìn)制計(jì)數(shù)器(PWM計(jì)數(shù)器)的輸出信號(hào)。

比較器的輸出端:

agb:輸出a端信號(hào)與b端信號(hào)的比較值。

圖2比較器模塊仿真波形圖

仿真結(jié)果說(shuō)明:

當(dāng)a端信號(hào)大于b端信號(hào)時(shí),比如a為15而b為0時(shí),輸出端agb輸出高電平信號(hào)“1”;反之,輸出端agb輸出低電平信號(hào)“0”。



關(guān)鍵詞:

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉