《2021太原理工大學(xué)EDAFPGA八路搶答器應(yīng)用設(shè)計(jì)課程設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《2021太原理工大學(xué)EDAFPGA八路搶答器應(yīng)用設(shè)計(jì)課程設(shè)計(jì)(10頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、太原理工大學(xué)EDAFPGA八路搶答器應(yīng)用設(shè)計(jì)課程設(shè)計(jì)
一、設(shè)計(jì)目的
1、加深對(duì)VHDL語(yǔ)言設(shè)計(jì)的理解;
2、通過(guò)對(duì)搶答器的設(shè)計(jì)加深對(duì)CPLD/FPG課程理解
3、通過(guò)對(duì)搶答器的設(shè)計(jì)了解簡(jiǎn)易集成電路的設(shè)計(jì)思路。
二、設(shè)計(jì)要求
1.設(shè)計(jì)具有一個(gè)可容納8組參賽者的數(shù)字智力搶答器,每組設(shè)置一個(gè)搶答按鈕供搶答者使用。
2.主持人按鍵清零,數(shù)碼管顯示0,進(jìn)入搶答狀態(tài);
3.主持人發(fā)出開(kāi)始命令,8人開(kāi)始搶答,若有人先按下?lián)尨鸢粹o,數(shù)碼管顯示該組號(hào)碼,其他人再按搶答按鈕,系統(tǒng)不再響應(yīng);
4.設(shè)置記分電路,可顯示每組選手的分?jǐn)?shù);
5.設(shè)置計(jì)時(shí)顯示。
三、設(shè)計(jì)方案
根據(jù)系統(tǒng)設(shè)計(jì)要求
2、可知,系統(tǒng)的輸入信號(hào)有:各組的搶答按鈕A、B、C、D、E、F、G、H,系統(tǒng)清零信號(hào)CLR,系統(tǒng)時(shí)鐘信號(hào)CLK,計(jì)分復(fù)位信號(hào)RET,加分按鈕信號(hào)ADD,計(jì)時(shí)預(yù)置控制信號(hào)LDN,計(jì)時(shí)使能信號(hào)EN,計(jì)時(shí)預(yù)置調(diào)整信號(hào)按鈕AN、BN,系統(tǒng)的輸出信號(hào)有:4個(gè)組搶答成功與否的指示燈控制信號(hào)輸出口LEDA、LEDB、LEDC、LEDD、LEDE、LEDF、LEDG、LEDH,4個(gè)組搶答時(shí)的計(jì)時(shí)數(shù)碼管顯示控制信號(hào)若干,搶答成功組別顯示的控制信號(hào)若干,各組計(jì)分動(dòng)態(tài)顯示的控制信號(hào)若干。
本次課程設(shè)計(jì)的主要目的旨在通過(guò)獨(dú)立完成一個(gè)“搶答器”的設(shè)計(jì),達(dá)到對(duì)EDA技術(shù)的熟練掌握,
提升對(duì)《CPLD/FPGA技術(shù)及應(yīng)用
3、》課程所學(xué)內(nèi)容的掌握和應(yīng)用。
以計(jì)算機(jī)為工具,設(shè)計(jì)者在EDA軟件平臺(tái)上,用硬件描述語(yǔ)言VHDL完成設(shè)計(jì)文件,然后由計(jì)算機(jī)
自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合、優(yōu)化、布局、布線和仿真,直至對(duì)于特定目標(biāo)芯片的適配
編譯、邏輯映射和編程下載等工作。基于VHDL程序設(shè)計(jì)中擁有輸入設(shè)計(jì)流程 ,其包括設(shè)計(jì)輸入,綜合,
適配,仿真測(cè)試和編程下載等方法。與其他應(yīng)用軟件相比,他提供了更強(qiáng)大、更直觀便捷和操作靈活
的原理圖輸入設(shè)計(jì)功能,同時(shí)還配備了更豐富的適用于各種需要的元件庫(kù),其中包括基本的邏輯元件,
宏功能元件,以及類(lèi)似于IP核的參數(shù)可設(shè)置的宏功能塊LPM庫(kù)。
設(shè)計(jì)者不必具備許多諸如編程技術(shù),
4、硬件描述語(yǔ)言等知識(shí)就能迅速入門(mén),完成較大規(guī)模的電路設(shè)計(jì)系統(tǒng)。
能進(jìn)行任意層次的數(shù)字系統(tǒng)設(shè)計(jì),傳統(tǒng)的數(shù)字電路實(shí)驗(yàn)只能完成單一層次的設(shè)計(jì)。
能對(duì)系統(tǒng)中的任意層次,或任一元件的功能進(jìn)行精確的時(shí)序仿真。
通過(guò)時(shí)序仿真能迅速定位電路系統(tǒng)中的錯(cuò)誤所在,并及時(shí)糾正。
四:設(shè)計(jì)模塊方框圖
根據(jù)搶答器的功能要求,可以得出如下模塊系統(tǒng)結(jié)構(gòu)圖:
五模塊功能分析
1 搶答輸入開(kāi)關(guān)電路該電路由8個(gè)開(kāi)關(guān)按鍵組成,每一個(gè)選手與一個(gè)開(kāi)關(guān)對(duì)應(yīng)。開(kāi)關(guān)為常開(kāi)型,即當(dāng)按下開(kāi)關(guān)時(shí),開(kāi)關(guān)自動(dòng)的彈開(kāi)斷開(kāi),此時(shí)輸入搶答信號(hào)自動(dòng)變?yōu)楦唠娖?;?dāng)按下?lián)尨痖_(kāi)關(guān)時(shí),開(kāi)關(guān)閉合,輸入搶答信號(hào)為低電平。
2 鎖存器當(dāng)只要有一個(gè)且為任意一個(gè)搶
5、答輸入信號(hào)產(chǎn)生時(shí),觸發(fā)器電路被觸發(fā),在輸出端產(chǎn)生相應(yīng)的開(kāi)關(guān)電平信息,同時(shí)為避免之后的搶答開(kāi)關(guān)按鈕也按下產(chǎn)生錯(cuò)亂,最先產(chǎn)生的輸出電平變化又反饋回來(lái)將觸發(fā)器鎖定住,并保持輸出的電平信息。這樣就避免了搶答先后發(fā)生紊亂不清楚的現(xiàn)象發(fā)生。
3 編碼器編碼器的作用是將開(kāi)關(guān)信息轉(zhuǎn)化為8421BCD碼,以提供數(shù)字顯示電路所需要的編碼輸入。
4 譯碼器譯碼器的作用是將編碼器輸出的8421BCD碼轉(zhuǎn)化為數(shù)碼管需要的邏輯狀態(tài),譯碼器由七段共陰二極管組成,高位在左,低位在右,如當(dāng)輸入譯碼器的信號(hào)為“1101101”時(shí),數(shù)碼管的七個(gè)段g,f,e,d,c,b,a 分別接1,1,0,1,1,0,1,接有高電平的段亮,于
6、是數(shù)碼管顯示為“5”。
5 解鎖器
當(dāng)觸發(fā)鎖存電路被鎖存后,若要進(jìn)行下一輪的重新?lián)尨?,則需要將鎖存器解鎖,可通過(guò)強(qiáng)迫是復(fù)位控制置為1,使鎖存處于等待鎖存狀態(tài),以準(zhǔn)備進(jìn)行下一輪的搶答。
8路搶答器源VHDL程序,(包含倒計(jì)時(shí)dqs,數(shù)碼shuma,計(jì)分器jfq程序)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL; entity qiangdaqi is
port( rst: in std_logic;
clk: in
7、 std_logic;
key : in std_logic;
en:in std_logic;
q1,q2,q3,q4,q5,q6,q7,q8: in std_logic; shuma: out std_logic_vector( 6 downto 0); led: out std_logic_vector( 7 downto 0);
jfq: out std_logic_vector( 6 downto 0);
djs: out std_logic_vector( 6 downto 0)
);
end qiangdaqi;
architecture Behavioral o
8、f qiangdaqi is
signal s: std_logic_vector(3 downto 0);
signal q: std_logic_vector(7 downto 0);
signal max: std_logic;
signal b: std_logic_vector(3 downto 0):="0000"; signal A: std_logic_vector(3 downto 0):="0011"; signal cnt: std_logic_vector( 25 downto 0); signal clks: std_logic;
begin
proces
9、s(rst,clk,clks)
begin
if rst=0 then
cntelsif clkevent and clk=1 then
cntend if;
clksend process;
process(en,A,clks)
begin
if clksevent and clks=1 and en=1 then case A is
when "0000" => djswhen "0001" => djswhen "0010" => djswhen "0011" => djswhen others => null;
end case;
if a/="0000" the
10、n
aend if;
end if;
end process;
process(rst,clk)
begin
qif rst=0 then
selsif clkevent and clk=1 and A="0000"then
case q is
when "10000000" => swhen "01000000" => swhen "00100000" => swhen "00010000" => swhen "00001000" => swhen "00000100" => swhen "00000010" => swhen "00000001" => swhen oth
11、ers=>null;
end case;
end if;
end process;
process(rst,clk,s,A)
begin
if rst=0 then
maxelsif clkevent and clk=1 and A="0000" then
if s>0 then
maxend if;
end if;
end process;
process(rst,max,s,A)
begin
if rst=0 then
shumaelsif maxevent and max=1 and A="0000" then
if s(3)=0 and s(2)=0 a
12、nd s(1)=0 and s(0)=0 then shumaelsif s(3)=0 and s(2)=0 and s(1)=0 and s(0)=1then shumaelsif s(3)=0 and s(2)=0 and s(1)=1 and s(0)=0then
shumaelsif s(3)=0 and s(2)=0 and s(1)=1 and s(0)=1then shumaelsif s(3)=0 and s(2)=1 and s(1)=0 and s(0)=0then shumaelsif s(3)=0 and s(2)=1 and s(1)=0 and s(0)=1the
13、n shumaelsif s(3)=0 and s(2)=1 and s(1)=1 and s(0)=0then shumaelsif s(3)=0 and s(2)=1 and s(1)=1 and s(0)=1then shumaelsif s(3)=1 and s(2)=0 and s(1)=0 and s(0)=0 then shumaend if;
end if;
end process;
process(rst,max,s,A)
begin
if rst=0 then
ledelsif maxevent and max=1 and A="0000" then
if s
14、(3)=0 and s(2)=0 and s(1)=0 and s(0)=0then ledelsif s(3)=0 and s(2)=0 and s(1)=0 and s(0)=1then ledelsif s(3)=0 and s(2)=0 and s(1)=1 and s(0)=0then ledelsif s(3)=0 and s(2)=0 and s(1)=1 and s(0)=1then ledelsif s(3)=0 and s(2)=1 and s(1)=0 and s(0)=0then ledelsif s(3)=0 and s(2)=1 and s(1)=0 and s(0
15、)=1then ledelsif s(3)=0 and s(2)=1 and s(1)=1 and s(0)=0then ledelsif s(3)=0 and s(2)=1 and s(1)=1 and s(0)=1 then ledelsif s(3)=1 and s(2)=0 and s(1)=0 and s(0)=0then ledend if;
end if;
end process;
process(key,b)
begin
if keyevent and key=1 then
bend if ;
if b="1010" then
bend if;
case b
16、is
when "0000" => jfqend case;
end process;
end Behavioral;
實(shí)驗(yàn)結(jié)果圖:
實(shí)物圖顯示
六:調(diào)試
引腳鎖定完成,便進(jìn)行硬件下載命令。試驗(yàn)箱接通電源后,便進(jìn)行實(shí)驗(yàn)驗(yàn)證,按下清零鍵res,然后按下?lián)尨鸬拈_(kāi)關(guān)按鈕,當(dāng)下按的是第幾個(gè)編號(hào),數(shù)碼管顯示的就是該編號(hào),再按其他的搶答按鈕已無(wú)反應(yīng),表示搶答成功,該鎖存模塊電路時(shí)正確的。然后再按下清零鍵rest,再逐一嘗試其他的搶答開(kāi)關(guān)按鈕,觀察是否都能正常工作,如果都正常工作,則表示該8路智能搶答器設(shè)計(jì)正確。打開(kāi)實(shí)驗(yàn)箱,講導(dǎo)線連接到對(duì)應(yīng)的引腳上,按下復(fù)位鍵,此時(shí)只有發(fā)光
17、二級(jí)管是亮的,然后按下一號(hào)組,同時(shí)顯示器上顯示1,這時(shí)再按下2,顯示器仍然顯示1.按下復(fù)位鍵,先按2,再按3,顯示器顯示2。這個(gè)時(shí)候?qū)嶒?yàn)成功
七、實(shí)驗(yàn)心得
通過(guò)這次的EDA課程設(shè)計(jì),讓我熟練地掌握了EDA設(shè)計(jì)Quartus II10.0軟件的操作,使用VHDL語(yǔ)言,對(duì)應(yīng)填寫(xiě)管教,安裝硬件驅(qū)動(dòng),連接EDA實(shí)驗(yàn)箱出來(lái)結(jié)果,之前學(xué)會(huì)了基本的課程設(shè)計(jì)以及編譯仿真的操作,這次的智能搶答器又讓我學(xué)到很多,但是其中也遇到了很多困難。我們小組三個(gè)人,由我們共同來(lái)完成這個(gè)設(shè)計(jì)實(shí)驗(yàn)。
在設(shè)計(jì)的過(guò)程中我進(jìn)一步了解了設(shè)計(jì)的步驟和原理,進(jìn)一步加深了對(duì)《CPLD/FPGA應(yīng)用設(shè)計(jì)》這門(mén)課的理解,增強(qiáng)了以后學(xué)習(xí)的興趣,為以后的工作積累了一定的經(jīng)驗(yàn)。這讓我們知道了以前并不了解的知識(shí)。