<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/148164.htm

          文中著重介紹了一種FPGA利用VHDL硬件描述語言的設(shè)計(jì)方法,在設(shè)計(jì)過程中使用VHDL的EDA工具M(jìn)odelSim對(duì)各個(gè)模塊驗(yàn)證,并給出了完整的源程序和結(jié)果。

          1 總體功能結(jié)構(gòu)設(shè)計(jì)

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

          總體的功能結(jié)構(gòu)

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

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

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

          2 各功能模塊設(shè)計(jì)

          2.1 分頻器模塊

          分頻器的功能是提供標(biāo)準(zhǔn)時(shí)鐘控制信號(hào)以精確控制計(jì)數(shù)器的開閉,提供的標(biāo)準(zhǔn)信號(hào)是32MHz,根據(jù)設(shè)計(jì)精度0.01s的要求,輸出信號(hào)是100Hz,所以該分頻器實(shí)現(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 計(jì)數(shù)模塊

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

          計(jì)數(shù)模塊

          模6計(jì)數(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計(jì)數(shù)器的VHDL源程序與模6計(jì)數(shù)器類似,為節(jié)省篇幅,不再給出。

          2.3 使能信號(hào)轉(zhuǎn)換模塊

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

          該模塊源程序:

          process(enablein)

          begin

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

          temp= not temp;

          end if ;

          end process;

          2.4 譯碼顯示模塊

          由上面的設(shè)計(jì)可知,計(jì)數(shù)器輸出為二進(jìn)制碼,不能直接點(diǎn)亮數(shù)碼管,要想將計(jì)數(shù)結(jié)果通過數(shù)碼管顯示必須再設(shè)計(jì)一個(gè)七段譯碼電路,以便將計(jì)數(shù)結(jié)果輸出。通過分析可知該譯碼器是一個(gè)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 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();