在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于FPGA的數(shù)字秒表設計與仿真

            基于FPGA的數(shù)字秒表設計與仿真

            作者: 時間:2012-12-27 來源:網(wǎng)絡 收藏

            數(shù)字集成電路作為當今信息時代的基石,不僅在信息處理、工業(yè)控制等生產(chǎn)領域得到普及應用,并且在人們的日常生活中也是隨處可見,極大的改變了人們的生活方式。面對如此巨大的市場,要求數(shù)字集成電路的周期盡可能短、實驗成本盡可能低,最好能在實驗室直接驗證的準確性和可行性,因而出現(xiàn)了現(xiàn)場可編程邏輯門陣列.對于芯片而言,的易用性不僅使得設計更加簡單、快捷,并且節(jié)省了反復流片驗證的巨額成本。對于某些小批量應用的場合,甚至可以直接利用實現(xiàn),無需再去訂制專門的數(shù)字芯片。

            本文引用地址:http://www.biyoush.com/article/148164.htm

            文中著重介紹了一種FPGA利用VHDL硬件描述語言的設計方法,在設計過程中使用VHDL的EDA工具ModelSim對各個模塊驗證,并給出了完整的源程序和結果。

            1 總體功能結構設計

            一個完整的應具有計時、相應的控制以及計時結果顯示功能,總體的功能結構如圖1所示。黑色線框內(nèi)是計數(shù)模塊、使能轉化模塊和顯示譯碼模塊,左邊是輸入控制信號,右邊是顯示計時結果的數(shù)碼顯示管,用六位BCD七段數(shù)碼管顯示讀數(shù),顯示格式如圖2,計時范圍為:1小時,精度為0.01s.

            總體的功能結構

            輸入時鐘信號由32MHz的石英晶振提供,考慮到設計指標要求秒表精度為0.01秒,計數(shù)脈沖的時鐘輸入就應該是頻率為100Hz的脈沖,所以先要設計一個320000分頻器,分頻器的輸出可作計數(shù)器的輸入;其次計數(shù)模塊設計應綜合考慮秒表的計時范圍(1小時)和顯示輸出(6位輸出),6位輸出中有兩位是六進制輸出,其余四位是十進制輸出,所以可通過設計4個模10計數(shù)器和2個模6計數(shù)器來實現(xiàn),其中較低位的進位輸出就是高位的計數(shù)輸入端。

            控制模塊應包括開始計時/停止計時、復位兩個按鈕,即電路設計經(jīng)常用到的使能端和清零端,這兩個控制端口直接接到計數(shù)器的清零和史能端即可實現(xiàn)復位、開始計時/停止計時;但是外圍使能輸入需要經(jīng)過使能轉換電路后,才可變?yōu)橛嫈?shù)器可用的使能控制信號。因此在輸入使能信號和計數(shù)器使能輸入之間需設計一個信號轉換模塊。

            顯示計數(shù)結果的模塊實現(xiàn)較為簡單,只需將六位計數(shù)結果通過七段譯碼電路接到輸出即可點亮數(shù)碼管,無需時序控制,直接用組合邏輯電路就可以實現(xiàn)。數(shù)碼管顯示可以采用掃描顯示,用一個頻率1KHz的信號掃描一個多路選擇器,實現(xiàn)對六位已經(jīng)鎖存的計數(shù)結果的掃描輸出。

            2 各功能模塊設計

            2.1 分頻器模塊

            分頻器的功能是提供標準時鐘控制信號以精確控制計數(shù)器的開閉,提供的標準信號是32MHz,根據(jù)設計精度0.01s的要求,輸出信號是100Hz,所以該分頻器實現(xiàn)的功能是320000分頻,具體的VHDL源程序:

            process(clk)

            begin

            if(clk'event and clk='1‘)then

            if (q=159999)then

            q=0;

            count_temp=not count_temp;

            else

            q=q 1;

            end if;

            end if;

            end process;

            2.2 計數(shù)模塊

            該計數(shù)器要實現(xiàn)最大計數(shù)值為59分59秒99的計數(shù),而且為了數(shù)碼管顯示方便,該模塊必須通過計數(shù)器的級聯(lián)來實現(xiàn),即首先分別設計一個模6計數(shù)器和一個模10計數(shù)器,然后將他們級聯(lián),其中調(diào)用4次模10計數(shù)器、2次模6計數(shù)器,這樣可以比直接設計模100 的計數(shù)器和模60的計數(shù)器節(jié)省資源。級聯(lián)時低位的計數(shù)進位輸出接高位的計數(shù)輸入端,如圖3所示。再考慮到控制模塊的要求,每個計數(shù)器有三個輸入端:時鐘、使能和清零,兩個輸出端:計數(shù)輸出和進位輸出,采用同步使能異步清零的設計方法,每個計數(shù)器的使能和清零端都與外圍的使能和清零端相聯(lián)。

            計數(shù)模塊

            模6計數(shù)器的VHDL源程序如下:

            process(clear,clk)

            begin

            if (clear='1’) then

            tmp=“0000”;

            carryout='0';

            elsif(clk'event and clk='1‘) then

            if (rst='0’) then

            if (tmp=“0101”) then

            carryout='1';

            tmp=“0000”;

            else

            tmp=tmp 1;

            carryout='0';

            end if;

            end if;

            end if;

            模10計數(shù)器的VHDL源程序與模6計數(shù)器類似,為節(jié)省篇幅,不再給出。

            2.3 使能信號轉換模塊

            輸入的開始和停止信號是單個脈沖信號,而計數(shù)器要持續(xù)計數(shù)所需的使能信號是持續(xù)的高電平,所以需要通過使能控制電路實現(xiàn)使能信號的轉換。該模塊的VHDL源程序以及ModelSim輸出結果如下:

            該模塊源程序:

            process(enablein)

            begin

            if(enablein'event and enablein='1‘)then

            temp= not temp;

            end if ;

            end process;

            2.4 譯碼顯示模塊

            由上面的設計可知,計數(shù)器輸出為二進制碼,不能直接點亮數(shù)碼管,要想將計數(shù)結果通過數(shù)碼管顯示必須再設計一個七段譯碼電路,以便將計數(shù)結果輸出。通過分析可知該譯碼器是一個4輸入,7輸出元件,其真值表如表1所示:

            真值表

            根據(jù)以上真值表可寫出譯碼電路VHDL源程序如下:

            process(datainput)

            begin

            case datainput is

            when “0000”=>dataoutput=“0000010”;

            when “0001”=>dataoutput=“1001111”;

            when “0010”=>dataoutput=“0010001”;

            when “0011”=>dataoutput=“0000101”;

            when “0100”=>dataoutput=“1001100”;


            上一頁 1 2 下一頁

            評論


            相關推薦

            技術專區(qū)

            關閉