【正文】
=39。elseos=39。end if。說明:對于分高位計(jì)數(shù)模塊的程序,只需將上面程序中的 count=9 改成count=6 即可。iset : IN STD_LOGIC。os : OUT STD_LOGIC)。039。139。addr_1s=CONV_STD_LOGIC_VECTOR(count,4)。addr_1s=CONV_STD_LOGIC_VECTOR(count,4)。count:=0。count:=count+1。end if。clk_1sisetiset_addr[3..0]addr_1s[3..0]flaghhinst13圖 小時高位計(jì)數(shù)模塊組件26核心程序如下:ENTITY hh ISPORT(clk_1s : IN STD_LOGIC。flag: OUT STD_LOGIC)。039。139。elsif rising_edge(clk_1s ) thenif count=2 thenflag=39。elsif count=1 thenflag=39。27elseflag=39。end if。 譯碼顯示模塊該模塊完成對計(jì)數(shù)器編碼信息的譯碼工作,驅(qū)動數(shù)碼管則顯示相應(yīng)的數(shù)字。 led : OUT STD_LOGIC_vector(7 downto 0 ))。 case sel is 28when 0000=led=11000000。 when 0100=led=10011001。 when 1000=led=10000000。 end process。模塊組件如圖 所示。模塊組件如圖 所示。if mh=0101 and ml=1001 and(t=117 or t=115 or t=113 or t=111) then c=39。end if。139。a=clk1k and not(d)。該模塊仿真波形如圖 所示。學(xué)會了利用 QuarterII 軟件進(jìn)行原理圖的繪制,硬件描述語言 VHDL 的編寫,程序的仿真等工作。此次的數(shù)字鐘設(shè)計(jì)重在于按鍵的控制和各個模塊代碼的編寫,雖然能把鍵盤接口和各個模塊的代碼編寫出來,并能正常顯示,但對于各個模塊的優(yōu)化設(shè)計(jì)還有一定的缺陷和不足。,若先調(diào)整時低位,后調(diào)整時高位,會出現(xiàn) 24 到 29 這樣的不正常點(diǎn)數(shù)。這樣可以節(jié)省按鍵資源,以供更多的功能的使用。 主要參考文獻(xiàn)[1] 王紫婷,吳蓉 ,張彩珍,EDA 技術(shù)與應(yīng)用,蘭州大學(xué)出版社, 2022[2] 潘松,黃繼業(yè),EDA 技術(shù)實(shí)用教程,北京科學(xué)出版社,2022[3] 崔葛,基于 FPGA 的數(shù)字電路系統(tǒng)設(shè)計(jì),西安電子科技大學(xué)出版社,2022[4] 王開軍,姜宇柏,面向 CPLD/FPGA 的 VHDL 設(shè)計(jì),機(jī)械工業(yè)出版社, 2022[5] 畢滿清,電子技術(shù)實(shí)驗(yàn)與課程設(shè)計(jì),機(jī)械工業(yè)出版社,2022[6] 呂思忠,數(shù)子電路實(shí)驗(yàn)與課程設(shè)計(jì),哈爾濱工業(yè)大學(xué)出版社,2022[7] 謝自美,電子線路設(shè)計(jì)、實(shí)驗(yàn)、測試,華中理工大學(xué)出版社,2022。設(shè)計(jì)的過程變的相對簡單,容易修改。32展望本設(shè)計(jì)中雖然有控制鍵對時鐘進(jìn)行控制,但是用到的按鍵略多,在實(shí)際應(yīng)用上存在不足。在本設(shè)計(jì)調(diào)試過程中遇到了一些問題如下:,故顯示電路所用芯片的 I/O 端口高達(dá) 32 個,使得資源利用不合理。在設(shè)計(jì)電路中,往往是先仿真后連接實(shí)物圖,但有時候仿真和電路連接并不是完全一致的,例如在對具體模塊的仿真的過程中,往往沒有考慮到整體設(shè)計(jì)的層面以及與上下模塊接口的設(shè)計(jì)。31結(jié)果與展望結(jié)果將設(shè)計(jì)程序下載到硬件電路上運(yùn)行調(diào)試后,最終結(jié)果與預(yù)期效果基本一致,整點(diǎn)報(bào)時功能正常,時、分都能夠正常計(jì)數(shù)并能由按鍵控制校時。speaker=a or b。end if。039。else c=39。elset:=t+1。即將至整點(diǎn)時,前四秒低音,最后一秒高音。該模塊的仿真波形如圖 所示。 when others=led=10111111。 when 0110=led=10000010。 when 0010=led=10100100。 ARCHITECTURE behave OF drive IS SIGNAL sel:STD_LOGIC_vector(3 downto 0)。clkaddr[3..0]led[7..0]driveinst9圖 譯碼顯示模塊組件核心程序如下:ENTITY drive IS PORT (clk:in std_logic。end process k1。count:=count+1。count:=count+1。count:=0。039。addr_1s=iset_addr。ARCHITECTURE hh_architecture OF hh ISBEGINk1:process(clk_1s,iset )variable count:integer range 0 to 2:=0。iset_addr : IN STD_LOGIC_VECTOR(3 DOWNTO 0)。END hl_architecture。end if。elseos=39。elseif count=9 thenos=39。039。139。addr_1s=iset_addr。ARCHITECTURE hl_architecture OF hl ISBEGINk1:process(clk_1s,iset )variable count:integer range 0 to 10:=0。iset_addr : IN STD_LOGIC_VECTOR(3 DOWNTO 0)。主要完成小時低位向高位的進(jìn)位,產(chǎn)生脈沖信號,同時根據(jù) flag 信號的不同判斷出小時高位時 1 還是 2。end process k1。count:=count+1。count:=0。 thencount:=CONV_INTEGER(iset_addr )。END ml。iset : IN STD_LOGIC。該模塊的仿真波形如圖 所示。count:=count+1。139。os : OUT STD_LOGIC)。該模塊的仿真波形如圖 所示。end if。elsecount=count+1。139。END addram3。該模塊的仿真波形如圖 所示。end process k1。k1:process(inkey )beginif rising_edge(inkey) thencount=count+1。oaddr : OUT STD_LOGIC_VECTOR(3 downto 0))。inkey 是由消抖模塊輸出的有鍵按下的信號,這個信號引發(fā)按鍵控制模塊內(nèi)部信號的變化。而按鍵產(chǎn)生抖動的時間大約2ms 到 10ms,所以一旦計(jì)數(shù)完成,抖動已經(jīng)過去,不會發(fā)生重鍵現(xiàn)象了,這樣18就去除了抖動。該模塊有一個時鐘輸入端口,輸入時鐘信號是分頻出來的500HZ 的時鐘;有一個輸入端口與行線相連,用于輸入行線狀態(tài);一個輸出端口,用于輸出有按鍵按下的信號。iclk oclk1soclk2msdivinst8圖 分頻電路模塊經(jīng)分頻后輸出 1HZ 的標(biāo)準(zhǔn)秒信號 oclk1s、500HZ 的按鍵消去抖信號。因此這種振蕩電路輸出的是準(zhǔn)確度極高的信號。靜態(tài)驅(qū)動是指每個數(shù)碼管的每一個段碼都由一個 I/O 端口進(jìn)行驅(qū)動,其優(yōu)點(diǎn)是編程簡單,顯示亮度高,缺點(diǎn)是占用 I/O 端口多。選用該款芯片的原因是:① Altera 公司的 Quartus II 開發(fā)環(huán)境非常友好、直觀,為整個系統(tǒng)的開發(fā)提供了極大的方便;② 該 FPGA 片內(nèi)邏輯資源、IO 端口數(shù)和 RAM 容量都足夠用,并且價格相對來說比較便宜,速度快,可以滿足要求,且有很大的升級空間??刂菩盘栍?5矩形鍵盤輸入。秒計(jì)數(shù)器滿60后向分計(jì)數(shù)器進(jìn)位,分計(jì)數(shù)器滿60后向小時計(jì)數(shù)器進(jìn)位,小時計(jì)數(shù)器按照“24翻1” 規(guī)律計(jì)數(shù)。 [7]13第三章 數(shù)字鐘總體設(shè)計(jì)方案 數(shù)字鐘的構(gòu)成數(shù)字鐘實(shí)際上是一個對標(biāo)準(zhǔn)頻率(1HZ)進(jìn)行計(jì)數(shù)的計(jì)數(shù)電路。編譯器首先檢查出工程設(shè)計(jì)文件中可能的錯誤信息,供設(shè)計(jì)者排除。11使用 New Project Wizard 可以為工程指定工作目錄、分配工程名稱以及指定最高層設(shè)計(jì)實(shí)體的名稱,還可以指定要在工程中使用的設(shè)計(jì)文件、其它源文件、用戶庫和 EDA 工具,以及目標(biāo)器件系列和具體器件等。 具體設(shè)計(jì)流程首先建立工作庫目錄,以便存儲工程項(xiàng)目設(shè)計(jì)文件。 Assembler 為設(shè)計(jì)建立編程文件。在對源代碼進(jìn)行少量更改之后,還可以使用增量布局布線。 Analysis amp。流程圖中可以包含代表其它設(shè)計(jì)文件的符號;還可以使用MegaWizard PlugIn Manager 生成宏功能模塊和 IP 內(nèi)核的自定義變量,在設(shè)計(jì)中將它們實(shí)例化。編譯和仿真檢測無誤后,便可將下載信息通過 QuartusII 提供的編程器下載入目標(biāo)器件中了。 S y n t h e s i s( 分析與綜合 )F i l t e r( 適配器 )A s s e