《七人表決器的VHDL程序設計》_第1頁
《七人表決器的VHDL程序設計》_第2頁
《七人表決器的VHDL程序設計》_第3頁
《七人表決器的VHDL程序設計》_第4頁
《七人表決器的VHDL程序設計》_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、一、題目 用VHDL設計七人表決器二、分析討論: 七人表決器這一功能用C語言、匯編語言或VHDL編程然后下載到單片機上實現,不過用VHDL編程不僅技術含量高而且能讓我們更熟練的掌握使用quartus軟件的步驟和方法。所以我們使用VHDL完成。七人表決器就是當投票的人中,同意個數過半(即大于等于4)時,認為通過;否則,不通過。 在編程中我們使用一個七位二進制輸入變量表示投票人;一個七位二進制輸出變量表示一個七段數碼管顯示同意的票數;一個一位的輸出變量表示最終的投票結果。此結果能夠在quartus軟件中通過時序仿真。 在硬件上我們用七個撥動開關來表示七個投票人,撥動開關為1時表示同意,為0表示不同

2、意;同意的票數和表決的時間分別通過一個七段數碼管顯示出來;最終的表決結果用一個LED表示。 三、設計方案 31實現原理 首先,編寫一個十進制的減法計數器,其輸入為clk, clr, en,輸出為q3.0。外部的時鐘信號的頻率選擇為1KHz,此頻率太大無法顯示投票的限制時間,所以要用一個分頻器來增大計數時間。設計一個分頻器的程序,將時鐘信號經過分頻器輸入到計數器中,輸入為clk, 輸出為 new clk。當clk 有1000個上升沿是newclk產生一個脈沖,也就是計數器計數一次。其次,編輯七人表決器在主程序,其輸入為clk, clr, en, input6.0, q3.0,輸出為output,

3、led6.0。此程序的是時鐘脈沖clk也為1KHz;當q從9到4期間投票是有效的,在4到0期間是無效的,此時就顯示之前同意的票數。記錄的票數通過casa語句轉換到8位七段數碼管顯示出來。投票的時間和記錄的票數要通過兩個數碼管顯示,所以要用一個三八譯碼器來完成。接著編輯一個三八譯碼器的程序,其輸入為clk, led6.0, q3.0, 輸出為 choice, data7.0。程序中當用一個中間變量來選擇數碼管,由于clk的掃描的頻率很大,所以兩個數碼管看上去是同時顯示。 32 實現條件 = 1 * GB3 在quartus環境下編輯操作; = 2 * GB3 外部時鐘信號; = 3 * GB3

4、控制引腳。3.3 算法的描述 首先,編寫十進制的減法計數器,其輸入為clk, clr, en,輸出為q3.0,運行之后生成模塊器件。這個子程序中主要用到的算法是if語句:if(clr=0)then count_4=1001;elsif(clkevent and clk=1)thenif(en=1)thenif(count_4=0000)thencount_4=1001;elsecount_4x:=1111110; when 1=x:=0110000; when 2=x:=1101101; when 3=x:=1111001; when 4=x:=0110011; when 5=x:=10110

5、11; when 6=x:=1011111; when 7=x:=1110000; when others=x:=0000000;end case; 接著編輯三八譯碼器的程序,其輸入為clk, led6.0, q3.0, 輸出為 choice, data7.0, 生產模塊器件。此程序中用到的算法主要有if語句和casa語句。 if clkevent and clk=1 THEN if count=1 then count=0; else countdataindataindataindataindataindataindataindataindataindataindatain=0000000

6、0; end case; 最后,設計一個分頻器的程序,將時鐘信號經過分頻器輸入到計數器中,輸入為clk, 輸出為 new clk 。此程序主要用到的算法是if語句。 if clkevent and clk=1 then if cnter=999 then cnter=0; else cnteroutputoutputx:=1111110; when 1=x:=0110000; when 2=x:=1101101; when 3=x:=1111001; when 4=x:=0110011; when 5=x:=1011011; when 6=x:=1011111; when 7=x:=11100

7、00; when others=x:=0000000; end case;l=x;end if;end process;end art;十進制計數器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count10 isport (clk,clr,en:in std_logic; q:out std_logic_vector(3 downto 0);end count10;architecture rtl of count10 issignal count_4:std_logic_vec

8、tor(3 downto 0);beginq(0)=count_4(0);q(1)=count_4(1);q(2)=count_4(2);q(3)=count_4(3);process(clk,clr)beginif(clr=0)then count_4=1001;elsif(clkevent and clk=1)thenif(en=1)thenif(count_4=0000)thencount_4=1001;elsecount_4=count_4-1;end if;end if;end if;end process;end rtl;譯碼器library ieee;use ieee.std_l

9、ogic_1164.all;use ieee.std_logic_unsigned.all;ENTITY ymq1 ISPORT( clk: INSTD_LOGIC; p1 : INSTD_LOGIC_VECTOR(6 downto 0); p2 : IN STD_LOGIC_VECTOR(3 downto 0);choice: OUTSTD_LOGIC;data: OUTSTD_LOGIC_VECTOR(7 downto 0);END ymq1;ARCHITECTURE art OF ymq1 IS SIGNAL count : STD_LOGIC;-_VECTOR(2 downto 0);

10、SIGNAL temp : STD_LOGIC_VECTOR(6 downto 0);signal temp1: STD_LOGIC_VECTOR(3 downto 0);SIGNAL choicein :STD_LOGIC;-_VECTOR(2 downto 0);SIGNAL datain : STD_LOGIC_VECTOR(7 downto 0);beginclk1_label:PROCESS (clk)BEGINif clkevent and clk=1 THEN if count=1 then count=0; else count=1; end if;end if;END PRO

11、CESS clk1_label;clk2_label:process(clk,p1,p2)BEGINif clkevent and clk=1 then choicein=count; choice=choicein; data=datain; if(count=1)then temp1dataindataindataindataindataindataindataindataindataindataindatain=00000000; end case; elsetempdataindataindataindataindataindataindataindataindataindataind

12、ataindataindataindataindataindatain=00000000; end case;end if; data=datain;end if;end process;END art;分頻器library ieee;use ieee.std_logic_1164.all;entity fpq is port(clk:in std_logic; newclk:out std_logic);end entity fpq;architecture art of fpq is signal cnter:integer range 0 to 999; begin process(clk)is begin if clkevent

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論