基於VHDL語言的多人表決器設計
實驗原理
用七個開關作爲表決器的7個輸入變量,輸入變量爲邏輯“1”時表示表決者“贊同”;輸入變量爲邏輯“0”時,表示表決者“不贊同”。輸出邏輯“1”時,表示表決“通過”;輸出邏輯“0”時,表示表決“不通過”。當表決器的七個輸入變量中有4個以上(含4個)爲“1”時,則表決器輸出爲“1”;否則爲“0”。
七人表決器設計方案很多,比如用多個全加器採用組合電路實現。用VHDL語言設計七人表決器時,也有多種選擇。我們可以用結構描述的方式用多個全加器來實現電路,也可以用行爲描述。採用行爲描述時,可用一變量來表示選舉通過的總人數。當選舉人大於或等於4時爲通過,綠燈亮;反之不通過時,黃燈亮。描述時,只須檢查每一個輸入的狀態(通過爲“1”,不通過爲“0”),並將這些狀態值相加,判斷狀態值和即可選擇輸出。
設計思路:
本設計採用多個全加器實現組合電路,用七個開關作爲表決器的七個輸入變量,邏輯“1”時表示“贊同”,邏輯“0”時表示“不贊同”,用發光二極管作爲輸出指令,輸出邏輯“1”表示“通過”;輸出邏輯“0”時表示“不通過”。當表決器的七個輸入變量中的4個以上(包含4個)爲“1”時,則表決器輸出爲“1” ,綠燈亮;否則爲“0”綠燈不亮。
軟件說明:ModelSimSetup-13.1.0.162,QuartusSetup-13.1.0.162。
建立工程:
第一步:打開Quartus軟件。
第二步:點擊New Project Wizard -> next.
第三步:選擇工程文件的存放位置,輸入工程名 -> next -> next。
第四步:在family欄選擇芯片型號-Cyclone IV E,在Name欄選擇EP4CE115F29C7,選擇完之後點擊next。(如果不進行硬件調試時,此處默認即可)
第五步:檢查工程有沒有建錯,點擊完成。如下圖:
程序設計:
表決器頂層文件設計:
library ieee;
use ieee.std_logic_1164.all;
entity bjq is
port(
a:in std_logic_vector(6 downto 0); --7個人
num:buffer integer range 0 to 7; --表決通過人數
co:out std_logic); --是否通過信號
end bjq;
architecture art of bjq is
Begin
process(a)
variable b:integer range 0 to 7; --定義變量b
begin
b:=0;
for n in 0 to 6 loop
if a(n)='1' then
b:=b+1; --統計通過人數
end if;
end loop;
num<=b;
if(b>=4)then co<='1';
else co<='0';
end if;
end process;
end art;
文件仿真(這裏採用modelsim仿真波形):
- 選擇File-> New -> Verification/Debugging Files ->University Program VWF。
2.打開測試文件。(右鍵點擊添加端口,對輸入信號初始化,賦值。)
3.仿真結果:
邏輯電路圖:
顯示編譯成功後,選擇菜單欄 Tools –>Netlist Viewers –>RTL Viewer 顯示邏輯電路圖