亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        用Verilog語言設(shè)計任意次ASIC分頻器

        2013-11-19 11:27:46唐衛(wèi)斌
        商洛學(xué)院學(xué)報 2013年2期
        關(guān)鍵詞:分頻器偶數(shù)計數(shù)器

        唐衛(wèi)斌

        (商洛學(xué)院 物理與電子信息工程系,陜西商洛 726000)

        Verilog語言是應(yīng)用最廣泛的硬件描述語言(HDL)之一。它是硬件(數(shù)字邏輯電路)設(shè)計人員和EDA工具之間的界面;是一種用形式化方法來描述數(shù)字電路和設(shè)計數(shù)字邏輯系統(tǒng)的語言。設(shè)計者可以利用這種語言來描述自己的設(shè)計思想,然后利用EDA工具進行仿真驗證和時序分析,再自動綜合到門級電路,最后用ASIC(專用集成電路)或FPGA實現(xiàn)其功能[1-2]。

        分頻器是FPGA設(shè)計中使用頻率非常高的基本單元之一。它是將較高頻率通過分頻得到較低頻率的一種單元電路。盡管目前在大部分設(shè)計中還廣泛使用集成鎖相環(huán) (如altera的PLL,Xilinx的DLL)來進行時鐘的分頻、倍頻以及相移設(shè)計[3],但是,對于時鐘要求不太嚴(yán)格的設(shè)計,通過自主設(shè)計進行時鐘分頻的實現(xiàn)方法仍是不錯的選擇。首先這種方法可以節(jié)省鎖相環(huán)資源,再者,這種方式只消耗不多的邏輯單元就可以達到對時鐘操作的目的,具有成本低、可編程等優(yōu)點[4]。而使用Verilog語言進行分頻器設(shè)計在當(dāng)前設(shè)計實踐中并不多見,文獻[5]中夏宇聞教授對此稍有提及,但未給出具體代碼。本文在介紹計數(shù)器設(shè)計的基礎(chǔ)上,給出基于計數(shù)器的分頻器設(shè)計模版,包括偶數(shù)次分頻和奇數(shù)次分頻,這些模版在當(dāng)前的設(shè)計實踐中尚且空缺,因而可以給其他數(shù)字邏輯電路設(shè)計人員直接調(diào)用,或者作為庫文件使用,從而大大縮短電路設(shè)計人員的設(shè)計時間。

        1 計數(shù)器

        計數(shù)器是實現(xiàn)分頻電路的基礎(chǔ),計數(shù)器有普通計數(shù)器和約翰遜計數(shù)器兩種。這兩種計數(shù)器均可應(yīng)用在分頻電路中[6]。

        1.1 加法(或減法)計數(shù)器

        使用Verilog實現(xiàn)的模十加法計數(shù)器:

        module cnt10(clk,rst,cnt);/*定義端口變量 */

        input clk,rst;

        output[3:0]cnt;

        reg[3:0]cnt;

        always@ (posedge clk,posedge rst)if(rst)cnt<=0; /*復(fù)位信號*/

        else

        begin if(cnt==9)cnt<=0; /*當(dāng)計數(shù)到 9時強制歸零*/

        else cnt<=cnt+1; /* 計數(shù) */

        end

        endmodule

        使用Modelsim仿真結(jié)果如圖1所示。

        圖1 普通計數(shù)器仿真波形

        從波形上可以看到輸出端口cnt反復(fù)循環(huán)輸出0~9這10個數(shù)字。普通計數(shù)器的RTL(寄存器傳輸級)結(jié)構(gòu)圖如圖2所示[7]??梢娫撚嫈?shù)器由四位加法單元和四位觸發(fā)器構(gòu)成。有兩個輸入端口:時鐘輸入clk和復(fù)位信號輸入rst。

        圖2 普通計數(shù)器RTL結(jié)構(gòu)

        1.2 約翰遜計數(shù)器

        約翰遜計數(shù)器是一種移位計數(shù)器,采用的是把輸出的最高位取非,然后反饋送到最低位觸發(fā)器的輸入端。也稱為扭環(huán)形計數(shù)器。它在每個時鐘下只有一個輸出發(fā)生變化[8]。

        約翰遜計數(shù)器沒有有效利用寄存器的所有狀態(tài),假設(shè)最初值或復(fù)位狀態(tài)為0000,則依次為0000、0001、0011、0111、1111、1110、1100、1000、0000如此循環(huán)。

        再者,如果由于干擾噪聲引入一個無效狀態(tài),如0010,則無法恢復(fù)到有效循環(huán)中去,需要加入錯誤恢復(fù)處理。

        2 分頻器

        分頻器有整數(shù)次分頻器和小數(shù)次分頻器之分。對于整數(shù)次分頻器又有奇數(shù)次和偶數(shù)次分頻器。這里只討論整數(shù)分頻。

        2.1 偶數(shù)次分頻

        偶數(shù)次分頻通過計數(shù)器計數(shù)是完全可以實現(xiàn)的。如進行N次偶數(shù)分頻,那么可以通過由待分頻的時鐘觸發(fā)計數(shù)器計數(shù),當(dāng)計數(shù)器從0計數(shù)到N/2-1時,輸出時鐘進行翻轉(zhuǎn),并給計數(shù)器一個復(fù)位信號,使得下一個時鐘從零開始計數(shù)。以此循環(huán)下去。這種方法可以實現(xiàn)任意的偶數(shù)分頻[9]?;诖怂悸返拇a見注釋①。

        從如圖3所示仿真波形上可以看到,通過計數(shù)器計數(shù),每計數(shù)3次,輸出時鐘反相一次,從而使輸出時鐘為輸入時鐘的1/6,完成了6分頻,并且占空比是50%。

        圖3 偶數(shù)次分頻仿真波形(6分頻)

        2.2 奇數(shù)次分頻

        奇數(shù)次分頻歸類為一般的方法為:對于實現(xiàn)占空比為50%的N次奇數(shù)分頻,首先進行上升沿觸發(fā)進行模N計數(shù),計數(shù)從零開始,到(N-1)/2進行輸出時鐘翻轉(zhuǎn),然后經(jīng)過(N+1)/2再次進行翻轉(zhuǎn)得到一個占空比非50%奇數(shù)n分頻時鐘。再者同時進行下降沿觸發(fā)的模N計數(shù),類似翻轉(zhuǎn)生成占空比非50%的奇數(shù)n分頻時鐘。兩個占空比非50%的n分頻時鐘相或運算,得到占空比為50%的奇數(shù)n分頻時鐘[10]?;诖怂悸返拇a見注釋②。

        從如圖4仿真波形上可以清楚地看到count1和count2兩個計數(shù)器從1到4的計數(shù)過程,以及分別對應(yīng)clk時鐘和clk_re時鐘計數(shù)所產(chǎn)生的clkA和clkB兩個中間時鐘,對這兩個中間時鐘相或的到最終所要的5分頻輸出時鐘clk_odd,并且占空比是50%。

        圖4 奇數(shù)次分頻仿真波形(5分頻)

        對該 5次分頻電路進行軟件綜合 (synopsys_DC),獲得RTL結(jié)構(gòu)圖如圖5所示。

        圖5 分頻器綜合結(jié)果—RTL結(jié)構(gòu)圖

        可以看到該邏輯電路是由若干與非門、或非門、反相器、或門以及D觸發(fā)器構(gòu)成,是典型的數(shù)字電路。該電路再經(jīng)過后續(xù)軟件進行布局布線、后仿真、時序分析、生成版圖,就可以獲得ASIC單元電路,應(yīng)用到ASIC設(shè)計制造之中。

        3 結(jié)語

        本文詳細給出了偶數(shù)次分頻和奇數(shù)次分頻的通用Verilog代碼,并給出了相應(yīng)的解釋,通過了ModelSim的仿真。從仿真波形上看,兩段代碼均正確無誤的完成了預(yù)期的功能??梢妰啥未a可以作為設(shè)計模版提供給其他數(shù)字邏輯設(shè)計人員直接調(diào)用,或者作為庫文件使用。

        注釋:

        ①偶數(shù)次分頻器代碼

        module even_division(clk,rst,count,clk_odd);/*定義模塊 */

        input clk,rst; /*輸入端口*/

        output clk_even;//輸出端口

        output[3:0]count;//輸出端口

        reg clk_even;//寄存器變量

        reg[3:0]count;//寄存器變量

        parameter N=6;//定義參數(shù) 6分頻

        always@(posedge clk)

        if(!rst) //復(fù)位所有輸出寄存器

        begin count<=1'b0;

        clk_even<=1'b0;

        end

        else if(count< N/2-1)begin //0~N/2-1計數(shù),對本例為0~2計數(shù)

        count<=count+1'b1;//計數(shù)器加1

        end

        else begin

        count <=1'b0;//計數(shù)器賦零

        clk_even<=~clk_even;//輸出時鐘反相end

        endmodule

        ②奇數(shù)次分頻器代碼

        module odd_division(clk,rst,clk_odd);

        input clk,rst;//定義輸入時鐘和復(fù)位信號

        output clk_odd;//定義輸出時鐘

        reg[3:0]count1,count2;//定義兩個計數(shù)器

        reg clkA,clkB;//定義兩個中間時鐘

        wire clk_odd,clk_re;//定義輸出時鐘和反相輸入時鐘為連線型變量

        parameter N=5;//定義參數(shù)為5,即5分頻電路

        assign clk_re=~clk;//將輸入時鐘反相,賦值給clk_re

        assign clk_odd=clkA|clkB;//給出輸出時鐘的表達式clkA和clkB相或

        always@(posedge clk)

        if(!rst)

        begin count1<=1'b0;clkA <=1'b0;//復(fù)位時鐘clkA和計數(shù)器count1

        end

        else if(count1<(N-1))//開始 0~N-1 計數(shù)

        begin count1<=count1+1'b1;

        if(count1==(N-1)/2)//如果計數(shù)器count1=(N-1)/2,時鐘clkA反相

        begin clkA<=~clkA; end

        end

        else begin clkA<=~clkA;count1<=1'b0; /*否則時鐘clkA反相,計數(shù)器count1歸零*/

        end

        always@(posedge clk_re)//反相時鐘工作

        if(!rst)

        begin count2<=1'b0;clkB<=1'b0;//復(fù)位時鐘clkB和計數(shù)器count2

        end

        else if(count2<(N-1))//開始 0~N-1 計數(shù)

        begin count2<=count2+1'b1;

        if(count2==(N-1)/2)//如果計數(shù)器count2=(N-1)/2,時鐘clkB反相

        begin clkB <= ~clkB; end

        end

        else begin clkB<=~clkB;count2<=1'b0;

        //否則時鐘clkB反相,計數(shù)器count2歸零

        end

        endmodule

        [1]喬廬峰.Verilog HDL數(shù)字系統(tǒng)設(shè)計與驗證[M].電子工業(yè)出版社,2009:106-125.

        [2]王金明,楊吉斌.數(shù)字系統(tǒng)設(shè)計與Verilog HDL[M].電子工業(yè)出版社,2002:182-235.

        [3]潘 松,黃繼業(yè),潘 明.EDA技術(shù)實用教程:Verilog HDL版[M].4版.科學(xué)出版社,2010:300-340.

        [4]李俊一,牛萍娟.基于Verilog HDL設(shè)計的多功能數(shù)字鐘[J].微計算機信息.2006,22(11):44-50.

        [5]Sanir Palnitkar,夏宇聞,胡燕祥.Verilog HDL數(shù)字設(shè)計與綜合[M].2版.電子工業(yè)出版社,2009:240-260.

        [6]約瑟夫·卡瓦納,陳亦歐.Verilog HDL數(shù)字設(shè)計與建模[M].電子工業(yè)出版社,2011:305-326.

        [7]沈 理.Verilog RTL模型[J].同濟大學(xué)學(xué)報:自然科學(xué)版,2002,30(10):28-33.

        [8]李勇堅,何積豐,孫永強.Verilog操作語義研究[J].軟件學(xué)報,2002,13(10):53-62.

        [9]劉小平,何云斌,董懷國.基于Verilog HDL的有限狀態(tài)機設(shè)計與描述[J].計算機工程與設(shè)計,2008,29(4):56-60.

        [10]俞莉瓊,付宇卓.有限狀態(tài)機的Verilog設(shè)計與研究[J].微電子學(xué)與計算機,2004,21(11):20-25.

        猜你喜歡
        分頻器偶數(shù)計數(shù)器
        認識奇數(shù)與偶數(shù)
        一種基于0.18μm SiGe工藝的8GHz前置分頻器
        高頻、低相噪、雙模分頻器設(shè)計
        采用虛擬計數(shù)器的電子式膜式燃氣表
        煤氣與熱力(2022年2期)2022-03-09 06:29:30
        奇數(shù)與偶數(shù)
        偶數(shù)階張量core逆的性質(zhì)和應(yīng)用
        計數(shù)器競爭冒險及其處理的仿真分析
        DRM/DAB/AM/FM頻率綜合器中吞吐脈沖分頻器的設(shè)計
        任意N進制計數(shù)器的設(shè)計方法
        河南科技(2014年10期)2014-02-27 14:09:30
        基于單片機的仰臥起坐計數(shù)器
        亚洲日本va午夜在线影院| 国产高清成人午夜视频| 国产毛多水多高潮高清| 好大好深好猛好爽视频免费| 超碰Av一区=区三区| 亚洲国产精品一区亚洲国产| 亚洲国产中文字幕一区| 欧美video性欧美熟妇| 色狠狠色狠狠综合一区 | 日本免费在线一区二区三区| 亚洲国产av无码专区亚洲av| 亚洲国产综合人成综合网站| 天堂岛国精品在线观看一区二区| 日本va中文字幕亚洲久伊人| 中国人妻与老外黑人| 区二区欧美性插b在线视频网站| 中国免费一级毛片| 亚洲天堂亚洲天堂亚洲色图| 亚洲一区自拍高清亚洲精品| 狠狠躁夜夜躁人人爽超碰97香蕉| 中文字幕人妻少妇美臀| 亚洲一区二区三区中文字幕网| 免费久久人人爽人人爽av| 五月天婷婷综合网| 少妇性l交大片免费快色| 亚洲av片无码久久五月| 久久婷婷成人综合色| 久久久亚洲精品午夜福利| 国产精品久久婷婷免费观看| 无码区a∨视频体验区30秒| 国产精品一区二区电影| 亚洲中文字幕不卡一区二区三区| 国产精品一区二区三区卡| 一二三四在线观看免费视频| 91久久国产自产拍夜夜嗨| 成年人视频在线观看麻豆| 2019日韩中文字幕mv| 亚洲精品不卡电影| 97久久久一区二区少妇| 人妻丝袜中文无码av影音先锋专区| 内射精品无码中文字幕|