• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      唐衛(wèi)斌

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

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

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

      1 計(jì)數(shù)器

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

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

      使用Verilog實(shí)現(xiàn)的模十加法計(jì)數(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ù)位信號(hào)*/

      else

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

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

      end

      endmodule

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

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

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

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

      1.2 約翰遜計(jì)數(shù)器

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

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

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

      2 分頻器

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

      2.1 偶數(shù)次分頻

      偶數(shù)次分頻通過計(jì)數(shù)器計(jì)數(shù)是完全可以實(shí)現(xiàn)的。如進(jìn)行N次偶數(shù)分頻,那么可以通過由待分頻的時(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í)鐘從零開始計(jì)數(shù)。以此循環(huán)下去。這種方法可以實(shí)現(xiàn)任意的偶數(shù)分頻[9]?;诖怂悸返拇a見注釋①。

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

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

      2.2 奇數(shù)次分頻

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

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

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

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

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

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

      3 結(jié)語(yǔ)

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

      注釋:

      ①偶數(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計(jì)數(shù),對(duì)本例為0~2計(jì)數(shù)

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

      end

      else begin

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

      clk_even<=~clk_even;//輸出時(shí)鐘反相end

      endmodule

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

      module odd_division(clk,rst,clk_odd);

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

      output clk_odd;//定義輸出時(shí)鐘

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

      reg clkA,clkB;//定義兩個(gè)中間時(shí)鐘

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

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

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

      assign clk_odd=clkA|clkB;//給出輸出時(shí)鐘的表達(dá)式clkA和clkB相或

      always@(posedge clk)

      if(!rst)

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

      end

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

      begin count1<=count1+1'b1;

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

      begin clkA<=~clkA; end

      end

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

      end

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

      if(!rst)

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

      end

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

      begin count2<=count2+1'b1;

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

      begin clkB <= ~clkB; end

      end

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

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

      end

      endmodule

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

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

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

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

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

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

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

      [8]李勇堅(jiān),何積豐,孫永強(qiáng).Verilog操作語(yǔ)義研究[J].軟件學(xué)報(bào),2002,13(10):53-62.

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

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

      猜你喜歡
      分頻器偶數(shù)計(jì)數(shù)器
      認(rèn)識(shí)奇數(shù)與偶數(shù)
      一種基于0.18μm SiGe工藝的8GHz前置分頻器
      高頻、低相噪、雙模分頻器設(shè)計(jì)
      煤氣與熱力(2022年2期)2022-03-09 06:29:30
      奇數(shù)與偶數(shù)
      偶數(shù)階張量core逆的性質(zhì)和應(yīng)用
      計(jì)數(shù)器競(jìng)爭(zhēng)冒險(xiǎn)及其處理的仿真分析
      DRM/DAB/AM/FM頻率綜合器中吞吐脈沖分頻器的設(shè)計(jì)
      任意N進(jìn)制計(jì)數(shù)器的設(shè)計(jì)方法
      河南科技(2014年10期)2014-02-27 14:09:30
      基于單片機(jī)的仰臥起坐計(jì)數(shù)器
      青浦区| 黔西| 电白县| 亳州市| 乳源| 东山县| 双江| 淮北市| 甘洛县| 祥云县| 调兵山市| 诸暨市| 巫溪县| 辛集市| 新安县| 林周县| 宁安市| 城口县| 礼泉县| 石林| 南开区| 多伦县| 靖西县| 长武县| 搜索| 隆林| 汉中市| 屯门区| 元氏县| 吉木萨尔县| 尚义县| 静乐县| 宣化县| 陇南市| 盐津县| 嘉禾县| 宜昌市| 义乌市| 庄浪县| 贵州省| 始兴县|