開封大學(xué)機(jī)電工程學(xué)院 侯 靜
EDA是將數(shù)字系統(tǒng)以某一種特定的表達(dá)方式輸入計(jì)算機(jī)開發(fā)平臺進(jìn)行處理,經(jīng)由綜合,仿真,下載到目標(biāo)芯片,最終實(shí)現(xiàn)設(shè)計(jì)的智能化設(shè)計(jì)技術(shù)。其中輸入文件的種類眾多,有原理圖輸入法、硬件描述語言輸入法、狀態(tài)圖輸入法、波形輸入法等。
硬件描述語言(HDL)是EDA技術(shù)的重要組成部分,是設(shè)計(jì)數(shù)字系統(tǒng)的重要表達(dá)手段,和原理圖輸入法,波形輸入法相比,具有靈活度高,易于修改、升級,方便調(diào)用,庫資源豐富等優(yōu)點(diǎn)。常見的HDL主要有VHDL、Verilog HDL、ABEL、AHDL等,其中標(biāo)準(zhǔn)化語言VHDL、Verilog使用最廣泛,可以被幾乎所有的EDA工具支持。
可變模計(jì)數(shù)器是數(shù)字系統(tǒng)中廣泛應(yīng)用的一種電路模塊,本文討論了一種基于VHDL語言實(shí)現(xiàn)的可變模計(jì)數(shù)器的EDA設(shè)計(jì)方案,采用FPGA芯片作為設(shè)計(jì)載體,F(xiàn)PGA具有在線可重構(gòu)的優(yōu)點(diǎn),如需對計(jì)數(shù)器的技術(shù)指標(biāo)進(jìn)行修改,只需修改源程序中的相應(yīng)參數(shù),重新進(jìn)行編譯、仿真、配置即可,使得系統(tǒng)本身靈活性好,便于升級和維護(hù)。
本文設(shè)計(jì)的計(jì)數(shù)器為5位輸出可變模計(jì)數(shù)器,采用兩位控制信號選擇計(jì)數(shù)的模值,因此可進(jìn)行四種模值的切換。計(jì)數(shù)器在工作時(shí),可以通過控制信號m[1∶0]的值選擇相應(yīng)的模值m,計(jì)數(shù)時(shí),在每個(gè)時(shí)鐘的上升沿進(jìn)行加法計(jì)數(shù),從0計(jì)到m-1,然后自動(dòng)歸零循環(huán)計(jì)數(shù)。在本設(shè)計(jì)中,輸出端口為5位,可以實(shí)現(xiàn)模小于等于32的計(jì)數(shù)應(yīng)用。如果需要增可選擇模值的數(shù)量,只需要增加選擇控制信號位數(shù)即可。隨著模值的增大,還可以相應(yīng)增加輸出端口信號的位數(shù)來對應(yīng)。
在本設(shè)計(jì)中,采用VHDL語言進(jìn)行源程序的設(shè)計(jì),源程序由實(shí)體和結(jié)構(gòu)體兩個(gè)部分組成,在實(shí)體中定義了系統(tǒng)的輸入輸出端口,在結(jié)構(gòu)體中行描述了計(jì)數(shù)器的邏輯功能。令兩位控制信號分別為m1、m0,計(jì)數(shù)脈沖為clk輸入時(shí)鐘信號,計(jì)數(shù)值輸出為5位二進(jìn)制信號y。假設(shè)當(dāng)控制信號m[1∶0]=0時(shí),進(jìn)行模19計(jì)數(shù);m[1∶0]=1時(shí),進(jìn)行模4計(jì)數(shù);m[1∶0]=2時(shí),進(jìn)行模10計(jì)數(shù);m[1∶0]=3時(shí),進(jìn)行模6計(jì)數(shù).該程序通過信號傳遞參數(shù),如果想修改計(jì)數(shù)器的功能指標(biāo),只需要修改源程序中相應(yīng)的端口參數(shù)和信號參數(shù)即可,修改設(shè)計(jì)非常方便、靈活。采用VHDL描述的源程序如下:
以上源程序在集成開發(fā)環(huán)境下通過綜合和適配,將行為和功能的高層次表達(dá)轉(zhuǎn)換為門電路的低層次表達(dá),最終在硬件上實(shí)現(xiàn)系統(tǒng)功能。
將編寫好的源程序與實(shí)體名variable_m同名保存在工程項(xiàng)目路徑下,文件名后綴為.vhd。本設(shè)計(jì)采用的芯片是Altera公司的Flex10k系列FPGA芯片EPF10K30ETC144-1,源文件通過編譯后系統(tǒng)的提示編譯成功,如圖1所示。
建立波形仿真文件,設(shè)置控制信號m[1∶0]的值分別為0和,2,在仿真窗口觀察仿真波形,仿真結(jié)果正確。仿真波形見圖2、圖3。
圖1
圖2
圖3
在本文編寫的源程序中,輸出端口y的范圍定義為0到20,是由于計(jì)數(shù)的模最大設(shè)置為19的緣故,這個(gè)定義在源程序編譯后,會由編譯器自動(dòng)生成一個(gè)5位二進(jìn)制的輸出端口,即實(shí)際的輸出端計(jì)數(shù)范圍是0到31,而源程序中設(shè)定的計(jì)數(shù)模最大不能超過32。如果需要增加計(jì)數(shù)模的值,在定義端口y的時(shí)候,就要增大y的輸出范圍,而系統(tǒng)進(jìn)行編譯的時(shí)候會自動(dòng)生成相應(yīng)位數(shù)的輸出端口,從這點(diǎn)來看,VHDL語言設(shè)計(jì)的靈活性要遠(yuǎn)遠(yuǎn)好于原理圖輸入法、狀態(tài)圖輸入法、波形輸入法。
[1]潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程[M].北京:科學(xué)出版社,2002.
[2]楊曉慧,楊永健.基于FPGA的EDA/SOPC技術(shù)與VHDL[M].北京:國防工業(yè)出版社,2007.
[3]譚會生,瞿遂春.EDA技術(shù)綜合應(yīng)用實(shí)例與分析[M].西安:西安電子科技大學(xué)出版社,2004.
[4]吳繼華,王誠.Altera FPGA/CPLD設(shè)計(jì)(高級篇)[M].北京:人民郵電出版社,2005.