版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 1 緒論</b></p><p> 1.1 EDA 技術(shù)概論</p><p> EDA技術(shù)就是以計(jì)算機(jī)為工具,設(shè)計(jì)者在EDA軟件平臺(tái)上,用硬件描述語(yǔ)言VHDL完成設(shè)計(jì)文件,然后由計(jì)算機(jī)自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合、優(yōu)化、布局、布線和仿真,直至對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。EDA技術(shù)的出現(xiàn),極大地提高了電
2、路設(shè)計(jì)的效率和可操作性,減輕了設(shè)計(jì)者的勞動(dòng)強(qiáng)度。在電子技術(shù)設(shè)計(jì)領(lǐng)域,可編程邏輯器件(如CPLD、FPGA)的應(yīng)用,已得到廣泛的普及,這些器件為數(shù)字系統(tǒng)的設(shè)計(jì)帶來(lái)了極大的靈活性。這些器件可以通過(guò)軟件編程而對(duì)其硬件結(jié)構(gòu)和工作方式進(jìn)行重構(gòu),從而使得硬件的設(shè)計(jì)可以如同軟件設(shè)計(jì)那樣方便快捷。這一切極大地改變了傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)方法、設(shè)計(jì)過(guò)程和設(shè)計(jì)觀念,促進(jìn)了EDA技術(shù)的迅速發(fā)展。</p><p> 1.2 硬件描述語(yǔ)言V
3、HDL</p><p> 1.2.1 VHDL簡(jiǎn)介</p><p> VHDL全名Very-High-Speed Integrated Circuit HardwareDescription Language,誕生于1982年。VHDL語(yǔ)言是一種用于電路設(shè)計(jì)的高級(jí)語(yǔ)言。它在80年代的后期出現(xiàn)。最初是由美國(guó)國(guó)防部開(kāi)發(fā)出來(lái)供美軍用來(lái)提高設(shè)計(jì)的可靠性和縮減開(kāi)發(fā)周期的一種使用范圍較小的設(shè)
4、計(jì)語(yǔ)言 。 </p><p> VHDL翻譯成中文就是超高速集成電路硬件描述語(yǔ)言,主要是應(yīng)用在數(shù)字電路的設(shè)計(jì)中。目前,它在中國(guó)的應(yīng)用多數(shù)是用在FPGA/CPLD/EPLD的設(shè)計(jì)中。當(dāng)然在一些實(shí)力較為雄厚的單位,它也被用來(lái)設(shè)計(jì)ASIC。 </p><p> 1.2.2 VHDL 的流程設(shè)計(jì)</p><p> 從系統(tǒng)總體要求出發(fā),自上而下地逐步將設(shè)計(jì)的內(nèi)容細(xì)化
5、,最后完成系統(tǒng)硬件的整體設(shè)計(jì)。在設(shè)計(jì)的過(guò)程中,對(duì)系統(tǒng)自上而下分成三個(gè)層次進(jìn)行設(shè)計(jì):</p><p> 第一層次是行為描述。所謂行為描述,實(shí)質(zhì)上就是對(duì)整個(gè)系統(tǒng)的數(shù)學(xué)模型的描述。一般來(lái)說(shuō),對(duì)系統(tǒng)進(jìn)行行為描述的目的是試圖在系統(tǒng)設(shè)計(jì)的初始階段,通過(guò)對(duì)系統(tǒng)行為描述的仿真來(lái)發(fā)現(xiàn)設(shè)計(jì)中存在的問(wèn)題。在行為描述階段,并不真正考慮其實(shí)際的操作和算法用何種方法來(lái)實(shí)現(xiàn),而是考慮系統(tǒng)的結(jié)構(gòu)及其工作的過(guò)程是否能到達(dá)系統(tǒng)設(shè)計(jì)的要求。<
6、/p><p> 第二層次是RTL方式描述。這一層次稱為寄存器傳輸描述(又稱數(shù)據(jù)流描述)。如前所述,用行為方式描述的系統(tǒng)結(jié)構(gòu)的程序,其抽象程度高,是很難直接映射到具體邏輯元件結(jié)構(gòu)的。要想得到硬件的具體實(shí)現(xiàn),必須將行為方式描述的VHDL語(yǔ)言程序改寫(xiě)為RTL方式描述的VHDL語(yǔ)言程序。也就是說(shuō),系統(tǒng)采用RTL方式描述,才能導(dǎo)出系統(tǒng)的邏輯表達(dá)式,才能進(jìn)行邏輯綜合。</p><p> 第三層次是邏輯
7、綜合。即利用邏輯綜合工具,將RTL方式描述的程序轉(zhuǎn)換成用基本邏輯元件表示的文件(門級(jí)網(wǎng)絡(luò)表)。此時(shí),如果需要,可將邏輯綜合的結(jié)果以邏輯原理圖的方式輸出。此后可對(duì)綜合的結(jié)果在門電路級(jí)上進(jìn)行仿真,并檢查其時(shí)序關(guān)系。</p><p> 應(yīng)用邏輯綜合工具產(chǎn)生的門網(wǎng)絡(luò)表,將其轉(zhuǎn)換成PLD的編程碼,即可利用PLD實(shí)現(xiàn)硬件電路的設(shè)計(jì)。</p><p> 由自上而下的設(shè)計(jì)過(guò)程可知,從總體行為設(shè)計(jì)開(kāi)始到
8、最終的邏輯綜合,每一步都要進(jìn)行仿真檢查,這樣有利于盡早發(fā)現(xiàn)設(shè)計(jì)中存在的問(wèn)題,從而可以大大縮短系統(tǒng)的設(shè)計(jì)周期。</p><p> 1.3 Quartus II 軟件操作流程</p><p> 雙擊桌面上Quartus II 9.0,打開(kāi)Quartus軟件。</p><p> 新建VHDL文件 ,開(kāi)始編寫(xiě)VHDL程序。</p><p>
9、保存VHDL文件,文件取名要與程序?qū)嶓w名要一致。</p><p><b> 創(chuàng)建新工程</b></p><p> 按下“保存”按紐后會(huì)出現(xiàn)如下提示。提示是否為此文件建立一個(gè)工程,這很重要。然后點(diǎn)擊“是”,出現(xiàn)以下窗口,點(diǎn)“Next >”。</p><p> 圖1.1 新建工程提示</p><p><b&
10、gt; (4)器件的選擇</b></p><p> 繼續(xù)點(diǎn)“Next >”。然后選擇FPGA或CPLD的有關(guān)參數(shù),這些參數(shù)都是根據(jù)目標(biāo)芯片來(lái)選擇的,如下圖所示。</p><p><b> 圖1.2 芯片選擇</b></p><p><b> (5)編譯</b></p><p&g
11、t; 編譯:選擇processing菜單中的start compilation命令。編譯完成的提示如下,點(diǎn)擊確定即可。</p><p><b> (6)仿真</b></p><p> 這時(shí)可以進(jìn)行仿真,首先要建立波形文件,點(diǎn)“File選項(xiàng)中New”,出現(xiàn)如下窗口:</p><p> 圖1.3 建立波形文件</p><
12、p> 選擇 “Vector waveform File”點(diǎn)“OK”。出現(xiàn)以下窗口。</p><p> 圖1.4 建立波形文件后出現(xiàn)窗口</p><p> 雙擊左邊的空白處,設(shè)定輸入輸出信號(hào)。設(shè)定好波形后,保存波形。之后點(diǎn)進(jìn)行仿真。</p><p><b> ?。?)鎖定引腳</b></p><p> 引腳鎖
13、定,如下圖操作:</p><p> 引腳的鎖定是根據(jù)不同的電路和不同功能來(lái)確定的,不是一層不變的。</p><p> 選擇Assignments菜單下的Pins命令,出現(xiàn)以下窗口,</p><p> 圖1.5 引腳分配圖</p><p> 如果是下載到實(shí)驗(yàn)箱上則需連續(xù)按“模式選擇”按鈕選擇模式5,再按“系統(tǒng)復(fù)位”按鈕。進(jìn)行引腳鎖定,查
14、閱附表,分別點(diǎn)“l(fā)ocation”選擇引腳號(hào)。引腳鎖定后再編譯。如同此前進(jìn)行過(guò)的。編譯成功后點(diǎn)確定。</p><p><b> ?。?)下載</b></p><p> 選擇Tools菜單下的Programmer命令,然后在Program/Configure下打上鉤選中,點(diǎn)“start”按鈕開(kāi)始下載,“Progress”進(jìn)度條顯示下載進(jìn)度。成功下載后如圖所示:<
15、/p><p> 圖1.6 下載到實(shí)驗(yàn)箱界面</p><p> 下載完后就可以在實(shí)驗(yàn)箱查看結(jié)果。</p><p> 通過(guò)上面的步驟分別下載到實(shí)驗(yàn)箱中和FPGA中,驗(yàn)證了在仿真中的結(jié)果是正確的。</p><p><b> 2 課題設(shè)計(jì)</b></p><p> 2.1 出租車計(jì)費(fèi)器設(shè)計(jì)內(nèi)容<
16、;/p><p> ?。?)能實(shí)現(xiàn)計(jì)程與計(jì)費(fèi)功能,計(jì)費(fèi)標(biāo)準(zhǔn)為:按行駛里程收費(fèi),分為白天與黑夜。白天收費(fèi)標(biāo)準(zhǔn):起步價(jià)為6.00元,超過(guò)1公里按1元/公里計(jì)算,超過(guò)3公里多收10塊錢的空車返回費(fèi)用。黑夜收費(fèi)標(biāo)準(zhǔn):起步價(jià)為8.00元,超過(guò)1公里按2元/公里計(jì)算,超過(guò)3公里多收10塊錢的空車返回費(fèi)用。</p><p> ?。?) 能夠有對(duì)路程清零與對(duì)計(jì)費(fèi)停止功能。當(dāng)無(wú)乘客不需要計(jì)費(fèi)時(shí),對(duì)路程清零及對(duì)價(jià)格
17、清零。</p><p> (3) 實(shí)夠?qū)崿F(xiàn)按鍵控制顯示路程、價(jià)格及當(dāng)前車速,當(dāng)車速超過(guò)4Km/h時(shí)發(fā)出警報(bào)。</p><p> 2.2 出租車計(jì)費(fèi)器設(shè)計(jì)方框圖</p><p> 出租車計(jì)費(fèi)器是由輸入信號(hào)、分頻器(供蜂鳴器發(fā)生警報(bào)提供不同的頻率)、路程計(jì)數(shù)模塊、計(jì)費(fèi)模塊、控制模塊(控制輸出顯示路程、價(jià)格或當(dāng)前車速)、及譯碼顯示模塊(八個(gè)七段數(shù)碼管)。其總體方框圖
18、如下所示:</p><p> 圖2.1 總體設(shè)計(jì)方框圖</p><p> 2.3 出租車計(jì)費(fèi)器系統(tǒng)各功能模塊及模塊程序</p><p> 2.3.1 計(jì)程與計(jì)費(fèi)模塊</p><p> 計(jì)程與計(jì)費(fèi)模塊由一個(gè)時(shí)鐘輸入端 clk 與使能端en及復(fù)位端rst端與位選端SL[2..0]及顯示輸出端led[6..0]構(gòu)成。其en 端為‘1’時(shí)允許
19、計(jì)數(shù),rst為‘1’時(shí)計(jì)數(shù)清零。</p><p> 圖2.2 計(jì)程與計(jì)費(fèi)模塊圖</p><p><b> 其仿真圖如下所示:</b></p><p> 圖2.3 計(jì)程與計(jì)費(fèi)模塊仿真圖</p><p><b> 其程序如下:</b></p><p> library
20、ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_arith.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity taxi is</p><p>
21、; port( Clk : in std_logic; </p><p> daytime : in std_logic; </p><p> Rst : in std_logic; </p><p> en : in std_logic;</p><p>
22、 Motor : in std_logic; </p><p> Display : out std_logic_vector(6 downto 0); </p><p> SEG_SEL: buffer std_logic_vector(2 downto 0) </p><p><b> ); </b>&l
23、t;/p><p><b> end taxi;</b></p><p> architecture one of taxi is</p><p> signal Disp_Temp : integer range 0 to 15;</p><p> signal Disp_Decode: std_logic_vect
24、or(6 downto 0);</p><p> signal Meter1,Meter10,Meter100,Meter1K : integer range 0 to 9; </p><p> signal Money1,Money10,Money100 : integer range 0 to 9;</p><p> signal Old_Mone
25、y1 : integer range 0 to 9;</p><p><b> begin</b></p><p> process(Motor)</p><p><b> begin</b></p><p> if(Rst='0') then</p>&l
26、t;p> Meter1<=0;</p><p> Meter10<=0;</p><p> Meter100<=0;</p><p> Meter1K<=0;</p><p> elsif(Motor'event and Motor='1') then</p>&l
27、t;p> if(Meter1=9) then</p><p> Meter1<=0;</p><p> if(Meter10=9) then</p><p> Meter10<=0;</p><p> if(Meter100=9) then</p><p> Meter100<=0;
28、</p><p> if(Meter1K=9) then</p><p> Meter1K<=0;</p><p><b> else </b></p><p> Meter1K<=Meter1K+1;</p><p><b> end if;</b>&
29、lt;/p><p><b> else</b></p><p> Meter100<=Meter100+1;</p><p><b> end if;</b></p><p><b> else</b></p><p> Meter10<
30、;=Meter10+1;</p><p><b> end if;</b></p><p><b> else </b></p><p> Meter1<=Meter1+1;</p><p><b> end if;</b></p><p>
31、;<b> end if; </b></p><p> end process;</p><p> process(Clk)</p><p><b> begin</b></p><p> if en='0' then null; </p><p&g
32、t; elsif(Rst='0') then</p><p> Money1<=0;</p><p> Money10<=0;</p><p> Money100<=0;</p><p> elsif(Clk'event and Clk='1') then</p>
33、<p> if daytime ='0' then --bai tian</p><p> if(Meter1K<1) then </p><p> Money100<=0;</p><p> Money10<=6; </p><p> Money1<=0;</p
34、><p> Old_Money1<=0;</p><p><b> else</b></p><p> Money1<=Meter100;</p><p> Old_Money1<=Money1;</p><p> if(Old_Money1=9 and Money1=0)
35、 then</p><p> if(Money10=9) then</p><p> Money10<=0;</p><p> if(Money100=9) then</p><p> Money100<=0;</p><p><b> else </b></p>
36、<p> Money100<=Money100+1;</p><p><b> end if;</b></p><p><b> else</b></p><p> Money10<=Money10+1;</p><p><b> end if;<
37、/b></p><p> end if; </p><p> if (Meter1K=3) then</p><p> Money100<=1;</p><p> Money10<=8; </p><p> Money1<=0;</p><p&g
38、t; Old_Money1<=0;</p><p> if (Meter1K >2 )then</p><p> Money1<=Meter100;</p><p> Old_Money1<=Money1;</p><p> if(Old_Money1=9 and Money1=0) then</p&g
39、t;<p> if(Money10=9) then</p><p> Money10<=0;</p><p> if(Money100=9) then</p><p> Money100<=0;</p><p><b> else </b></p><p>
40、Money100<=Money100+1;</p><p><b> end if;</b></p><p><b> else</b></p><p> Money10<=Money10+1;</p><p><b> end if;</b></p&
41、gt;<p><b> end if;</b></p><p><b> end if ;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> else --
42、hei ye </p><p> if(Meter1K<1) then </p><p> Money100<=0;</p><p> Money10<=8; </p><p> Money1<=0;</p><p> Old_Money1<=0;</p&g
43、t;<p><b> else</b></p><p> Money1<=Meter100;</p><p> Old_Money1<=Money1;</p><p> if(Old_Money1=9 and Money1=0) then</p><p> if(Money10=9)
44、then</p><p> Money10<=0;</p><p> if(Money100=9) then</p><p> Money100<=0;</p><p><b> else </b></p><p> Money100<=Money100+1;</
45、p><p><b> end if;</b></p><p><b> else</b></p><p> Money10<=Money10+1;</p><p><b> end if;</b></p><p><b> end
46、if;</b></p><p><b> end if;</b></p><p> if (Meter1K=3) then</p><p> Money100<=2;</p><p> Money10<=2; </p><p> Money1<=0;&l
47、t;/p><p> Old_Money1<=0;</p><p> if (Meter1K>2) then </p><p> Money1<=Meter100;</p><p> Old_Money1<=Money1;</p><p> if(Old_Money1=9 and Money
48、1=0) then</p><p> if(Money10=9) then</p><p> Money10<=0;</p><p> if(Money100=9) then</p><p> Money100<=0;</p><p><b> else </b></p
49、><p> Money100<=Money100+1;</p><p><b> end if;</b></p><p><b> else</b></p><p> Money10<=Money10+1;</p><p><b> end if;
50、</b></p><p> end if; </p><p> end if; </p><p><b> end if ;</b></p><p><b> end if ;</b></p><p><b>
51、; end if ;</b></p><p> end process;</p><p> process(SEG_SEL) </p><p><b> begin</b></p><p> case (SEG_SEL+1) is</p><p> when &q
52、uot;000"=>Disp_Temp<=Meter1K;</p><p> when "001"=>Disp_Temp<=Meter100;</p><p> when "010"=>Disp_Temp<=Meter10;</p><p> when "011&q
53、uot;=>Disp_Temp<=Meter1;</p><p> when "100"=>Disp_Temp<=10;</p><p> when "101"=>Disp_Temp<=Money100;</p><p> when "110"=>Disp_T
54、emp<=Money10;</p><p> when "111"=>Disp_Temp<=Money1;</p><p> end case; </p><p> end process;</p><p> process(Clk)</p><p><
55、b> begin</b></p><p> if(Clk'event and Clk='1') then </p><p> SEG_SEL<=SEG_SEL+1;</p><p> if (SEG_SEL=9) then SEG_SEL<="000";</p>&l
56、t;p><b> else </b></p><p> Display<=Disp_Decode;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p&
57、gt;<p> process(Disp_Temp) </p><p><b> begin</b></p><p> case Disp_Temp is</p><p> when 0=>Disp_Decode<="0111111"; </p><p>
58、 when 1=>Disp_Decode<="0000110"; </p><p> when 2=>Disp_Decode<="1011011"; </p><p> when 3=>Disp_Decode<="1001111"; </p><p> wh
59、en 4=>Disp_Decode<="1100110"; </p><p> when 5=>Disp_Decode<="1101101"; </p><p> when 6=>Disp_Decode<="1111101"; </p><p> whe
60、n 7=>Disp_Decode<="0000111"; </p><p> when 8=>Disp_Decode<="1111111"; </p><p> when 9=>Disp_Decode<="1101111"; </p><p> when
61、 10=>Disp_Decode<="1000000"; </p><p> when others=>Disp_Decode<="0000000"; </p><p><b> end case;</b></p><p> end process; </p&
62、gt;<p><b> end one;</b></p><p><b> 2.3.2測(cè)速模塊</b></p><p> 測(cè)速模塊輸入端由Clk及Motor端組成,Clk提供計(jì)數(shù)脈沖,通過(guò)計(jì)Motor 6秒轉(zhuǎn)的圈數(shù)然后乘以10作為一分種出租車的車速,其輸出端變由SEL[2..0]及l(fā)out7[6..0]組成,前者用于掃描數(shù)碼管
63、的驅(qū)動(dòng),后者用于顯示轉(zhuǎn)速。</p><p><b> 圖2.4 測(cè)速模塊</b></p><p><b> 其仿真圖如下所示:</b></p><p> 圖2.5 測(cè)速模塊仿真圖</p><p><b> 其程序如下:</b></p><p>
64、 library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_arith.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity teltcl is</p>
65、;<p> port( Clk : in std_logic; </p><p> Motor : in std_logic;</p><p> SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);</p><p> lout7:out std_logic_vector(6 down
66、to 0));</p><p> end teltcl;</p><p> architecture one of teltcl is</p><p> signal clk1hz :std_logic;--1HZ時(shí)鐘信號(hào);</p><p> signal count : std_logic_vector(2 dow
67、nto 0); </p><p> signal clr1 :std_logic ;</p><p> signal ena1 :std_logic; </p><p> signal load1 :std_logic; </p><p> signal CQ1,CQ2,CQ3,CQ4 : std_l
68、ogic_vector(3 downto 0); </p><p> SIGNAL CQA :std_logic_vector(15 DOWNTO 0);</p><p> SIGNAL DOUT : STD_LOGIC_VECTOR(15 DOWNTO 0);</p><p> signal s:std_logic_vector(2 downto 0);&l
69、t;/p><p> signal lout4:std_logic_vector(3 downto 0);</p><p> SIGNAL in3,in2,in1,in0:std_logic_vector(3 downto 0);</p><p><b> begin</b></p><p> process(clk)
70、 </p><p> variable cnttemp : INTEGER RANGE 0 TO 999999;</p><p><b> begin</b></p><p> IF clk='1' AND clk'event THEN </p><p> IF cnttemp=99
71、9999 THEN cnttemp:=0; </p><p><b> ELSE </b></p><p> IF cnttemp<500000 THEN clk1hz<='1'; </p><p> ELSE clk1hz<='0'; </p><p><b
72、> END IF; </b></p><p> cnttemp:=cnttemp+1; </p><p><b> END IF; </b></p><p><b> end if;</b></p><p> end process;</p><p&
73、gt; process(Clk1hz) </p><p><b> begin</b></p><p> if(Clk1hz'event and Clk1hz='1') then</p><p> count<=count+1;</p><p> if count<6 t
74、hen</p><p> ena1<='1';load1<='0';clr1<='0';</p><p> elsif count=6 then</p><p> load1<='1';ena1<='0';clr1<='0'
75、;</p><p> elsif count=7 then</p><p> ena1<='0';load1<='0';clr1<='1';</p><p><b> end if;</b></p><p><b> end if
76、;</b></p><p> end process;</p><p> PROCESS(CLK,ENA1) IS</p><p><b> BEGIN</b></p><p> IF CLR1= '1' THEN CQ1<= "0000"; <
77、/p><p> elsif(Motor'event and Motor='1') then </p><p> IF ENA1= '1' THEN </p><p> if(CQ1="1001") then</p><p> CQ1<="0000";&l
78、t;/p><p> if(CQ2=9) then</p><p> CQ2<="0000";</p><p> if(CQ3="1001") then</p><p> CQ3<="0000";</p><p> if(CQ4="1
79、001") then</p><p> CQ4<="0000";</p><p><b> else </b></p><p> CQ4<=CQ4+1;</p><p><b> end if;</b></p><p><
80、;b> else</b></p><p> CQ3<=CQ3+1;</p><p><b> end if;</b></p><p><b> else</b></p><p> CQ2<=CQ2+1;</p><p><b>
81、; end if;</b></p><p><b> else </b></p><p> CQ1<=CQ1+1;</p><p><b> end if;</b></p><p><b> end if; </b></p><p
82、><b> END IF ;</b></p><p> CQA<=(CQ4&CQ3&CQ2&CQ1);</p><p> end process;</p><p> PROCESS ( LOAD1,CQA) IS</p><p><b> BEGIN</b&
83、gt;</p><p> IF LOAD1 'EVENT AND LOAD1= '1' </p><p> THEN DOUT<=CQA; </p><p><b> END IF;</b></p><p> END PROCESS;</p><p> pr
84、ocess (clk)</p><p><b> begin</b></p><p> IN3<=DOUT(15 DOWNTO 12);</p><p> IN2<=DOUT(11 DOWNTO 8);</p><p> IN1<=DOUT(7 DOWNTO 4);</p><
85、;p> IN0<=DOUT(3 DOWNTO 0);</p><p> if (clk'event and clk='1')then</p><p> if (s="111") then</p><p><b> s<="000";</b></p&g
86、t;<p> else s<=s+1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> sel<=s;</b></p><p> end process;</
87、p><p> process (s)</p><p><b> begin</b></p><p><b> case s is</b></p><p> when "000"=>lout4<="1111";</p><p&
88、gt; when "001"=>lout4<="1111";</p><p> when "010"=>lout4<=in2;</p><p> when "011"=>lout4<=in1;</p><p> when "100&q
89、uot;=>lout4<=in0;</p><p> when "101"=>lout4<="0000";</p><p> when "110"=>lout4<="1111";</p><p> when "111"=>
90、;lout4<="1111";</p><p> when others=>lout4<="XXXX";</p><p><b> end case;</b></p><p> case lout4 is</p><p> when "0000&
91、quot;=>lout7<="0111111";</p><p> when "0001"=>lout7<="0000110";</p><p> when "0010"=>lout7<="1011011";</p><p>
92、 when "0011"=>lout7<="1001111";</p><p> when "0100"=>lout7<="1100110";</p><p> when "0101"=>lout7<="1101101";</
93、p><p> when "0110"=>lout7<="1111101";</p><p> when "0111"=>lout7<="0000111";</p><p> when "1000"=>lout7<="11
94、11111";</p><p> when "1001"=>lout7<="1100111";</p><p> when "1010"=>lout7<="0111111";</p><p> when "1111"=>l
95、out7<="1000000";</p><p> when others=>lout7<="XXXXXXX";</p><p><b> end case;</b></p><p> end process;</p><p><b> end
96、one;</b></p><p><b> 2.3.3報(bào)警模塊</b></p><p> 報(bào)警模塊輸入端由Clk構(gòu)成,其主要用途在于為蜂嗚器提供不同頻率,其輸出端由spk端構(gòu)成,其是一個(gè)蜂鳴器用于報(bào)警。</p><p> 圖2.6 蜂鳴器模塊</p><p><b> 其仿真圖如下:<
97、/b></p><p> 圖2.7 蜂鳴器模塊仿真圖</p><p><b> 其程序如下:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_a
98、rith.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity teltcl is</p><p> port( Clk : in std_logic; </p><p> spk : buffer std_logic);&l
99、t;/p><p> end teltcl;</p><p> architecture one of teltcl is</p><p> signal tone : std_logic_vector(10 downto 0);</p><p> signal tone_count : std_logic_vector
100、(10 downto 0);</p><p> signal tone_index : integer range 0 to 15;</p><p> signal clk10_count : std_logic_vector(17 downto 0);</p><p> signal time : integer range 0 to
101、150;</p><p> signal clk10 : std_logic;</p><p><b> begin</b></p><p> process(clk) --generate 10hz clock signal</p><p><b> begin</b>&l
102、t;/p><p> if(clk'event and clk='1') then</p><p> clk10_count<=clk10_count+1;</p><p> if(clk10_count=16#3fff#) then</p><p> clk10<=not clk10;</p>
103、;<p> end if; </p><p><b> END IF ;</b></p><p> end process;</p><p> process(clk10) </p><p><b> begin</b></p><p> i
104、f(clk10'event and clk10='1') then</p><p> if(time=150) then</p><p><b> time<=0;</b></p><p><b> else</b></p><p> time<=time
105、+1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p> process(clk10) </p><p><b> begin</b>
106、;</p><p> if(clk10'event and clk10='1') then</p><p> case time is</p><p> when 0=>tone_index<=3; </p><p> when 1=>tone_index<=3;</p>
107、<p> when 2=>tone_index<=3;</p><p> when 3=>tone_index<=3;</p><p> when 4=>tone_index<=5;</p><p> when 5=>tone_index<=5;</p><p> when
108、6=>tone_index<=5;</p><p> when 7=>tone_index<=6;</p><p> when 8=>tone_index<=8;</p><p> when 9=>tone_index<=8;</p><p> when 10=>tone_inde
109、x<=8;</p><p> when 11=>tone_index<=9;</p><p> when 12=>tone_index<=6;</p><p> when 13=>tone_index<=8;</p><p> when 14=>tone_index<=5;<
110、/p><p> when 15=>tone_index<=5;</p><p> when 16=>tone_index<=12;</p><p> when 17=>tone_index<=12;</p><p> when 18=>tone_index<=12;</p>&
111、lt;p> when 19=>tone_index<=15;</p><p> when 20=>tone_index<=13;</p><p> when 21=>tone_index<=12;</p><p> when 22=>tone_index<=10;</p><p>
112、 when 23=>tone_index<=12;</p><p> when 24=>tone_index<=9;</p><p> when 25=>tone_index<=9;</p><p> when 26=>tone_index<=9;</p><p> when 27=&
113、gt;tone_index<=9;</p><p> when 28=>tone_index<=9;</p><p> when 29=>tone_index<=9;</p><p> when 30=>tone_index<=0;</p><p> when 31=>tone_inde
114、x<=0;</p><p> when 32=>tone_index<=9;</p><p> when 33=>tone_index<=9;</p><p> when 34=>tone_index<=9;</p><p> when 35=>tone_index<=10;<
115、;/p><p> when 36=>tone_index<=7;</p><p> when 37=>tone_index<=7;</p><p> when 38=>tone_index<=6;</p><p> when 39=>tone_index<=6;</p><
116、;p> when 40=>tone_index<=5;</p><p> when 41=>tone_index<=5;</p><p> when 42=>tone_index<=5;</p><p> when 43=>tone_index<=6;</p><p> when
117、 44=>tone_index<=8;</p><p> when 45=>tone_index<=8;</p><p> when 46=>tone_index<=9;</p><p> when 47=>tone_index<=9;</p><p> when 48=>tone
118、_index<=3;</p><p> when 49=>tone_index<=3;</p><p> when 50=>tone_index<=8;</p><p> when 51=>tone_index<=8;</p><p> when 52=>tone_index<=6
119、;</p><p> when 53=>tone_index<=5;</p><p> when 54=>tone_index<=6;</p><p> when 55=>tone_index<=8;</p><p> when 56=>tone_index<=5;</p>
120、<p> when 57=>tone_index<=5;</p><p> when 58=>tone_index<=5;</p><p> when 59=>tone_index<=5;</p><p> when 60=>tone_index<=5;</p><p>
121、when 61=>tone_index<=5;</p><p> when 62=>tone_index<=0;</p><p> when 63=>tone_index<=0;</p><p> when 64=>tone_index<=10;</p><p> when 65=>
122、;tone_index<=10;</p><p> when 66=>tone_index<=10;</p><p> when 67=>tone_index<=12;</p><p> when 68=>tone_index<=7;</p><p> when 69=>tone_ind
123、ex<=7;</p><p> when 70=>tone_index<=9;</p><p> when 71=>tone_index<=9;</p><p> when 72=>tone_index<=6;</p><p> when 73=>tone_index<=8;<
124、;/p><p> when 74=>tone_index<=5;</p><p> when 75=>tone_index<=5;</p><p> when 76=>tone_index<=5;</p><p> when 77=>tone_index<=5;</p><
125、;p> when 78=>tone_index<=5;</p><p> when 79=>tone_index<=5;</p><p> when 80=>tone_index<=5;</p><p> when 81=>tone_index<=0;</p><p> when
126、 82=>tone_index<=0;</p><p> when 83=>tone_index<=3;</p><p> when 84=>tone_index<=5;</p><p> when 85=>tone_index<=3;</p><p> when 86=>tone
127、_index<=5;</p><p> when 87=>tone_index<=5;</p><p> when 88=>tone_index<=6;</p><p> when 89=>tone_index<=7;</p><p> when 90=>tone_index<=9
128、;</p><p> when 91=>tone_index<=6;</p><p> when 92=>tone_index<=6;</p><p> when 93=>tone_index<=6;</p><p> when 94=>tone_index<=6;</p>
129、<p> when 95=>tone_index<=6;</p><p> when 96=>tone_index<=6;</p><p> when 97=>tone_index<=5;</p><p> when 98=>tone_index<=6;</p><p>
130、when 99=>tone_index<=8;</p><p> when 100=>tone_index<=8;</p><p> when 101=>tone_index<=8;</p><p> when 102=>tone_index<=9;</p><p> when 103=
131、>tone_index<=12;</p><p> when 104=>tone_index<=12;</p><p> when 105=>tone_index<=12;</p><p> when 106=>tone_index<=10;</p><p> when 107=>
132、tone_index<=9;</p><p> when 108=>tone_index<=9;</p><p> when 109=>tone_index<=10;</p><p> when 110=>tone_index<=9;</p><p> when 111=>tone_in
133、dex<=8;</p><p> when 112=>tone_index<=8;</p><p> when 113=>tone_index<=6;</p><p> when 114=>tone_index<=5;</p><p> when 115=>tone_index<=
134、3;</p><p> when 116=>tone_index<=3;</p><p> when 117=>tone_index<=3;</p><p> when 118=>tone_index<=3;</p><p> when 119=>tone_index<=8;</p
135、><p> when 120=>tone_index<=8;</p><p> when 121=>tone_index<=8;</p><p> when 122=>tone_index<=8;</p><p> when 123=>tone_index<=6;</p>&l
136、t;p> when 124=>tone_index<=8;</p><p> when 125=>tone_index<=6;</p><p> when 126=>tone_index<=5;</p><p> when 127=>tone_index<=3;</p><p>
137、 when 128=>tone_index<=5;</p><p> when 129=>tone_index<=6;</p><p> when 130=>tone_index<=8;</p><p> when 131=>tone_index<=5;</p><p> when 13
138、2=>tone_index<=5;</p><p> when 133=>tone_index<=5;</p><p> when 134=>tone_index<=5;</p><p> when 135=>tone_index<=5;</p><p> when 136=>to
139、ne_index<=5;</p><p> when 137=>tone_index<=5;</p><p> when 138=>tone_index<=0;</p><p> when 139=>tone_index<=0;</p><p> when others=>tone_in
140、dex<=0;</p><p><b> end case;</b></p><p><b> end if;</b></p><p> end process;</p><p> process(tone_index)</p><p><b> b
141、egin</b></p><p> case tone_index is</p><p> when 0=>tone<="11111111111"; --no output</p><p> when 1=>tone<="01100000101"; --773</p>
142、;<p> when 2=>tone<="01110010000"; --912</p><p> when 3=>tone<="10000001100"; --1036</p><p> when 5=>tone<="10010101101"; --1197&l
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計(jì)--出租車計(jì)費(fèi)器
- eda課程設(shè)計(jì)---出租車計(jì)費(fèi)器設(shè)計(jì)
- eda 課程設(shè)計(jì)--出租車計(jì)費(fèi)器設(shè)計(jì)
- eda課程設(shè)計(jì)--- 出租車計(jì)費(fèi)器
- eda課程設(shè)計(jì)——出租車計(jì)費(fèi)器設(shè)計(jì)
- eda課程設(shè)計(jì)--出租車計(jì)費(fèi)器的設(shè)計(jì)
- eda課程設(shè)計(jì)--出租車計(jì)費(fèi)器的設(shè)計(jì)
- eda課程設(shè)計(jì)--出租車自動(dòng)計(jì)費(fèi)器
- eda課程設(shè)計(jì)---出租車計(jì)費(fèi)器系統(tǒng)
- eda技術(shù)課程設(shè)計(jì)--出租車計(jì)費(fèi)器
- eda出租車計(jì)費(fèi)器
- 出租車計(jì)費(fèi)器課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)-出租車自動(dòng)計(jì)費(fèi)器設(shè)計(jì)
- 出租車自動(dòng)計(jì)費(fèi)器課程設(shè)計(jì)
- 出租車計(jì)費(fèi)器課程設(shè)計(jì)報(bào)告
- 出租車自動(dòng)計(jì)費(fèi)器設(shè)計(jì)課程設(shè)計(jì)
- 出租車自動(dòng)計(jì)費(fèi)器設(shè)計(jì)課程設(shè)計(jì)
- 出租車計(jì)費(fèi)器數(shù)字電子課程設(shè)計(jì)
- 基于eda技術(shù)出租車計(jì)費(fèi)器設(shè)計(jì)樣本
- 基于cpld出租車計(jì)費(fèi)器的課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論