版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> VHDL課程設(shè)計(jì)報(bào)告</p><p><b> 題目要求</b></p><p> ?。?)、EDA實(shí)驗(yàn)板組裝調(diào)試</p><p> 參照提供的EDA實(shí)驗(yàn)板電路原理圖、PCB圖以及元器件清單進(jìn)行電路板的組裝,組裝過</p><p> 程中要求能讀懂電路原理圖,了解各部分電路工作的原理。<
2、/p><p> 電路板組裝完成后,編寫以下三個小程序進(jìn)行電路板測試:</p><p><b> 1、流水燈程序</b></p><p> 編寫一個流水燈程序,使實(shí)驗(yàn)板上DS2—DS13十二個LED依次循環(huán)點(diǎn)亮。</p><p> 2、數(shù)碼管動態(tài)掃描程序</p><p> 了解BCD—七段鎖存
3、譯碼器CD4511的工作原理及數(shù)碼管動態(tài)掃描技術(shù),編寫一個程序,使EDA實(shí)驗(yàn)板上的8位數(shù)碼管由“0000 0000”按一定的頻率自加一直到“9999 9999”,然后歸零不斷循環(huán)以上過程。</p><p> 3、矩陣鍵盤掃描程序</p><p> 了解矩陣鍵盤掃描原理,編寫一程序,當(dāng)按下實(shí)驗(yàn)板上十六個按鍵任一鍵,數(shù)碼管上顯示相應(yīng)鍵值1—16。</p><p>
4、 以上測試程序先經(jīng)軟件仿真通過后下載到實(shí)驗(yàn)板上進(jìn)行測試,觀察實(shí)驗(yàn)結(jié)果,若與預(yù)期設(shè)計(jì)不符則應(yīng)對軟、硬件進(jìn)行細(xì)心檢查,排除故障。</p><p> 完成以上電路板組裝且調(diào)試通過后可進(jìn)行第二部分紅外遙控系統(tǒng)的設(shè)計(jì)。</p><p> (2)、紅外遙控系統(tǒng)的設(shè)計(jì)</p><p> 紅外遙控系統(tǒng)由發(fā)射編碼和接收解碼兩個部分組成,本課程設(shè)計(jì)要求制作發(fā)射編碼電路板(遙控器)
5、以及編寫程序在EDA實(shí)驗(yàn)板上實(shí)現(xiàn)接收解碼,具體說明如下:</p><p><b> 1、發(fā)射編碼部分</b></p><p> 發(fā)射編碼部分要求使用指定的元器件在萬用板上完成紅外遙控器的制作,該部分電路原理圖參照《PT2248數(shù)據(jù)手冊》,制作前請?jiān)敿?xì)閱讀《紅外遙控器制作說明》,制作時要求元器件在萬用板上排列整齊,布局合理,焊接良好,各按鍵功能正常,均能發(fā)送編碼。&
6、lt;/p><p><b> 2、接收解碼部分</b></p><p> 接收解碼用VHDL語言編寫程序,在EDA實(shí)驗(yàn)板上實(shí)現(xiàn)解碼,要求具有以下功能:</p><p><b> (1)基本要求:</b></p><p> ?。╝)將一體化紅外接收解調(diào)器的輸出信號解碼(12個單擊鍵、6個連續(xù)鍵,單擊
7、鍵編號為7-18,連續(xù)鍵編碼為1-6),在EDA實(shí)驗(yàn)板上用七段數(shù)碼管顯示出來;</p><p> ?。╞)當(dāng)按下遙控器1—6號連續(xù)鍵時,在EDA實(shí)驗(yàn)板上用發(fā)光二極管點(diǎn)亮作為連續(xù)鍵按下的指示,要求遙控器上連續(xù)鍵接下時指示燈點(diǎn)亮,直到松開按鍵時才熄滅,用于區(qū)別單擊鍵。</p><p> (c)EDA實(shí)驗(yàn)板上設(shè)置四個按鍵,其功能等同于遙控器上的1—4號按鍵,當(dāng)按下此四個按鍵時七段數(shù)碼管分別對應(yīng)
8、顯示“1”、“2”、“3”、“4”。</p><p> (d)每當(dāng)接收到有效按鍵時,蜂鳴器會發(fā)出提示音。</p><p> ?。?)擴(kuò)展功能:(能完成的加分)</p><p> 通過遙控器跳線改變用戶碼,EDA實(shí)驗(yàn)板上用三個發(fā)光二極管正確顯示發(fā)送端的用戶碼。</p><p><b> 設(shè)計(jì)分析</b></p&
9、gt;<p><b> 1)、流水燈程序:</b></p><p> 測試各發(fā)光二極管的程序。程序中只要依次給要閃亮的燈輸入低電平即可。</p><p> 2)、數(shù)碼管動態(tài)掃描程序</p><p> 測試8位數(shù)碼管的程序。CD4511可以將4位二進(jìn)制編碼轉(zhuǎn)換成對應(yīng)的7段顯像管編碼輸出。真值表如下:</p>&
10、lt;p> 程序中只要將8位數(shù)碼管顯示控制端全部置1,即可保持?jǐn)?shù)碼管顯示狀態(tài),依</p><p> 次將“0000”-“1001”輸送給CD4511就可以實(shí)現(xiàn)對8位數(shù)碼管的動態(tài)掃描。時鐘由晶振分頻后得到。</p><p> 3)、矩陣鍵盤掃描程序</p><p> 測試鍵盤輸入的程序。程序?qū)崿F(xiàn)了顯示0-4輸入的輸出顯示。鍵盤輸入行由“0111”到“11
11、10”,列也是由“0111”到“1110”,直接翻譯成對應(yīng)的二進(jìn)制編碼輸入CD4511譯碼顯示。</p><p><b> 4)、接收譯碼程序</b></p><p> 本次實(shí)驗(yàn)的最主要程序。發(fā)射端編碼方式已經(jīng)在《紅外遙控器制作說明及編碼規(guī)則簡要說明》中給出,要接收發(fā)射端發(fā)射的編碼最關(guān)鍵的問題是發(fā)射段頻率和接收段頻率不一致的現(xiàn)象。發(fā)射端頻率為38KHz,程序中設(shè)計(jì)
12、的接收端頻率為2.048MHz的8分頻,即8KHz。</p><p> 發(fā)射端每四個周期代表一個二進(jìn)制編碼,時間為1/38KHz*16*4=1.684ms,四個周期的時間換算成接收端周期數(shù)為1.684ms/(1/8KHz)=13.47。一個周期占13.47/4=3.37,三個周期占13.47/4*3=10.1,由于編碼中一個周期的低電平代表“1”,三個周期的低電平代表“0”,再考慮到同步的問題,?。?0.1+3
13、.37)/2=6.77作為判斷“0”、“1”的分界線,即當(dāng)檢測到超過7個接收端周期的低電平后即可認(rèn)為接收到的是“0”,否則為“1”。</p><p> 翻譯出編碼信號后根據(jù)編碼的規(guī)則,分析用戶和所顯示的數(shù)字即可。</p><p> 系統(tǒng)模塊的劃分以及各模塊的功能描述</p><p> 程序采用單進(jìn)程,劃分為接收編碼信號及翻譯模塊和輸出顯示模塊。</p&g
14、t;<p> 接收編碼信號模塊分為從鍵盤接收信號和從發(fā)射板接收信號,從鍵盤接收到的信號直接</p><p> 翻譯對應(yīng)的二進(jìn)制編碼輸出到顯示模塊;從發(fā)射板接收到的信號需要進(jìn)行譯碼,每次接收13位周期的信號,如果前7個周期都為低電平,即可認(rèn)為接收到“1”,否則為“0”。譯碼后根據(jù)編碼的規(guī)則進(jìn)行翻譯,翻譯成對應(yīng)的二進(jìn)制編碼輸出。當(dāng)檢測到收到的信號為1~6時,相應(yīng)的彩燈發(fā)亮指示連續(xù)按鍵。</p&
15、gt;<p> 輸出顯示模塊主要是對每一位顯像管分別的輸出進(jìn)行控制,根據(jù)翻譯出的二進(jìn)制編碼分別將各位的編碼輸入到CD4511,驅(qū)動顯像管顯示。</p><p><b> 程序仿真</b></p><p><b> ?。?)鍵盤仿真</b></p><p><b> 各信號描述:</b&g
16、t;</p><p> Qrset:復(fù)位信號</p><p> Qinf:串行信號輸入信號</p><p><b> Qck:時鐘信號</b></p><p><b> Qjian:</b></p><p> 鍵盤輸入信號(7代表輸入0111,即輸入1,同理B代表2
17、,D代表3,E代表4)</p><p> Qbit:片選信號,指示某個顯像管顯示</p><p> Qnum:二進(jìn)制編碼信號,輸入CD4511編碼</p><p> Qcon:彩燈顯示信號</p><p> Qusr:用戶信號(程序中全部將用戶設(shè)為111)</p><p> Qbeep:蜂鳴信號</p&
18、gt;<p> 此圖是測試鍵盤輸入的仿真,鍵盤依次輸入7、B、D、E(即1,2,3,4)在二進(jìn)制編碼端識別出1、2、3、4。相應(yīng)的彩燈也被置為低電平</p><p><b> (2)發(fā)射板仿真</b></p><p> 各信號含義與上面相同。</p><p> 該仿真是測試接收發(fā)射端信號的仿真。圖中仿真發(fā)射端編碼為1111
19、0010000,從仿真結(jié)果可以看到。Qbit片選信號正確的在兩個顯像管間切換。Qnum也根據(jù)片選信號的不同相應(yīng)的顯示0和1(顯示十位時是0,個位為1)。Qcon(6)是連續(xù)信號的顯示燈,接收到1后該顯示燈發(fā)光一段時間,之后會熄滅,因?yàn)檫B續(xù)信號會不停的發(fā)送編碼信號,所以顯示效果為連續(xù)燈常亮;而其他非連續(xù)信號輸入時該燈不會亮。Qcon(5 downto 0)正確顯示了接收到1信號時應(yīng)該亮的指示燈。Quser顯示用戶為111。</p&g
20、t;<p><b> 設(shè)計(jì)體會及心得</b></p><p> 本次實(shí)驗(yàn)鍛煉了我們動手的能力,進(jìn)一步熟練了焊接技巧。對布板的重要性有了更深刻</p><p> 的認(rèn)識,基本消除了以前常發(fā)生的飛線現(xiàn)象。</p><p> 最重要的是本次實(shí)驗(yàn)讓我們對信號遠(yuǎn)程傳輸?shù)陌l(fā)射和接收有了具體的了解,對如何使用VHDL來實(shí)現(xiàn)硬件的功能有了
21、初步了解。掌握了CD4511、74LS224、74HC4040、max7000等芯片的用法和各管腳的分布。</p><p> 實(shí)驗(yàn)中得到各位老師的幫助,尤其是反復(fù)的取拿器件,浪費(fèi)了老師很多時間,再此表示感謝~~</p><p><b> 源程序</b></p><p> --XIANSHI.VHD 負(fù)責(zé)各顯像管的顯示</p>
22、<p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> entity xianshi is</p><p><b> port (</b></p><p> acode : in std_logic_vector (4 do
23、wnto 0);--翻譯出的編碼</p><p> aclk : in std_logic;--時鐘信號</p><p> abit : out std_logic_vector(1 downto 0);--片選信號</p><p> anum : out std_logic_vector (3 downto 0)--編碼輸入CD4511</p&
24、gt;<p><b> );</b></p><p> end xianshi;</p><p> architecture behav of xianshi is</p><p><b> begin</b></p><p> process (aclk)</p>
25、;<p> variable a : std_logic ; </p><p><b> begin </b></p><p> if rising_edge (aclk) then</p><p><b> a:=not a;</b></p><p> if a='
26、0' then</p><p> anum <= "000" & acode(4); --十位</p><p> abit <= "10";</p><p><b> else</b></p><p> anum <= acode(3 do
27、wnto 0); --個位</p><p> abit <= "01";</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p> e
28、nd behav;</p><p> --OK.VHD 提供上層接口</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity o
29、k is </p><p><b> port (</b></p><p> qclk : in std_logic;</p><p> qreset : in std_logic;</p><p> qinf : in std_logic;</p><p> qjian : in st
30、d_logic_vector(3 downto 0);</p><p> qbit : out std_logic_vector (1 downto 0); </p><p> qnum : out std_logic_vector (3 downto 0);</p><p> qcon : out std_logic_vector (6 dow
31、nto 0);</p><p> quser: out std_logic_vector (2 downto 0);</p><p> qbeep: out std_logic);</p><p><b> end ok;</b></p><p> architecture behav of ok is</
32、p><p> component fenxi is</p><p><b> port (</b></p><p> clk : in std_logic; </p><p> inf : in std_logic;</p><p> reset : in std_logic;</
33、p><p> jian : in std_logic_vector(3 downto 0);</p><p> code : out std_logic_vector(4 downto 0);</p><p> con : out std_logic_vector (6 downto 0);</p><p> user: out std_
34、logic_vector (2 downto 0);</p><p> beep: out std_logic ); </p><p> end component fenxi;</p><p> component xianshi is</p><p><b> port (</b></p>
35、<p> acode : in std_logic_vector (4 downto 0);</p><p> aclk : in std_logic;</p><p> abit : out std_logic_vector(1 downto 0);</p><p> anum : out std_logic_vector (3 downto
36、0)</p><p><b> );</b></p><p> end component xianshi;</p><p> signal s : std_logic_vector(4 downto 0);</p><p><b> begin</b></p><p&
37、gt; t1: fenxi port map(</p><p> qclk,qinf,qreset,qjian,s,qcon,quser,qbeep</p><p><b> );</b></p><p> t2: xianshi port map(</p><p> s,qclk,qbit,qnum&
38、lt;/p><p><b> );</b></p><p> end behav;</p><p> --FENXI.VHD</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p>
39、use ieee.std_logic_unsigned.all;</p><p> entity fenxi is</p><p><b> port (</b></p><p> clk : in std_logic; --時鐘信號</p><p> inf : in std_logic; --串行輸入
40、信號</p><p> reset : in std_logic;--復(fù)位信號</p><p> jian : in std_logic_vector(3 downto 0); --鍵盤輸入信號</p><p> code : out std_logic_vector(4 downto 0);--二進(jìn)制編碼,輸入CD4511顯像</p>&
41、lt;p> con : out std_logic_vector (6 downto 0);--彩燈控制信號</p><p> user: out std_logic_vector (2 downto 0);--用戶端信號</p><p> beep: out std_logic ); --蜂鳴信號</p><p> end fenxi;&
42、lt;/p><p> architecture behav of fenxi is</p><p> type statetype is (s0, s1, s2,sk,t0,action);</p><p> signal state : statetype ;</p><p> constant beeptime : integer :
43、= 28 ;</p><p><b> begin </b></p><p> st: process (clk,inf) </p><p> variable cnt1,cnt2,cnta : integer range 0 to 30; -- ,cnta</p><p> variable reg :
44、 std_logic_vector(11 downto 0);</p><p> variable temp : std_logic_vector (4 downto 0);</p><p> variable tempcon : std_logic_vector (6 downto 0);</p><p> begin </p><
45、;p> -------------------------------------------------------------------------------------------------</p><p> -- 檢測鍵盤輸入和開始遠(yuǎn)程端接收部分</p><p> if reset= '1' then</p><p> s
46、tate <= s0; code <= "00000"; con <= "1111111"; user <="111";</p><p> elsif rising_edge (clk) then </p><p> case state is</p><p> when s
47、0 =></p><p> if inf = '0' then </p><p> reg:="000000000000"; tempcon:="1111111"; temp:="00000"; </p><p> cnt1:=0; cnt2:=0; cnta := 0;&
48、lt;/p><p> state <= sk;</p><p> elsif jian = "0111" then</p><p> code <= "00001"; beep<='1'; con <= "1011111"; user <="1
49、11";</p><p> elsif jian = "1011" then</p><p> code <= "00010"; beep<='1'; con <= "1101111"; user <="111";</p><p&g
50、t; elsif jian = "1101" then</p><p> code <= "00011"; beep<='1'; con <= "1110111"; user <="111";</p><p> elsif jian = "1110&
51、quot; then</p><p> code <= "00100"; beep<='1'; con <= "1111011"; user <="111";</p><p><b> else </b></p><p> state
52、 <= s0;beep<='0';con (6) <= '1';</p><p><b> end if;</b></p><p> -------------------------------------------------------------------------------------------
53、-------</p><p> --------------------------------------------------------------------------------------------------</p><p> ----譯碼部分,檢測發(fā)射端的發(fā)射信號</p><p> when sk =>
54、</p><p> if inf = '0' then</p><p> state <= s1;</p><p><b> else </b></p><p> state <= sk;</p><p><b> end if;</b>
55、</p><p> when s1 =></p><p> if inf = '0' then</p><p> cnt1:=cnt1 + 1;</p><p> state <= s1;</p><p> elsif inf='1' then</p>
56、<p> state <= s2; </p><p><b> end if;</b></p><p> when s2 => </p><p> cnt2:=cnt2 + 1; -- 計(jì)算已記多少位數(shù)</p><p> if cnt1 <
57、 7 then</p><p> reg:=reg(10 downto 0) & '0';</p><p><b> else </b></p><p> reg:=reg(10 downto 0) & '1';</p><p><b> end if;&
58、lt;/b></p><p> if cnt2 = 12 then state <= t0;</p><p> else cnt1:= 0 ;</p><p> state <= sk; </p><p><b> end if;</b></p><p>
59、 -------------------------------------------------------------------------------------------------- </p><p> ------------------------------------------------------------------------------
60、-------------------- </p><p> --譯碼部分,對譯碼之后的信號進(jìn)行相應(yīng)的譯碼輸出</p><p> when t0 =></p><p> beep <= '1' ; </p><p> case reg(8 downto 0) is</p>&
61、lt;p> --continuous 1~6------------</p><p> when "100100000" => --1</p><p> temp := "00001";</p><p> when "100010000" => --2</p>
62、;<p> temp := "00010";</p><p> when "100001000" => --3</p><p> temp := "00011";</p><p> when "100000100" => --4</p>
63、<p> temp := "00100";</p><p> when "100000010" => --5</p><p> temp := "00101";</p><p> when "100000001" => --6</p>&
64、lt;p> temp := "00110";</p><p> ---single 7~18---------</p><p> when "010100000" => --7</p><p> temp := "00111";</p><p> when
65、"010010000" => --8</p><p> temp := "01000";</p><p> when "010001000" => --9</p><p> temp := "01001";</p><p> when &q
66、uot;010000100" => --10</p><p> temp := "10000";</p><p> when "010000010" => --11</p><p> temp := "10001";</p><p> when &q
67、uot;010000001" => --12</p><p> temp := "10010";</p><p> when "001100000" => --13</p><p> temp := "10011";</p><p> when &q
68、uot;001010000" => --14</p><p> temp := "10100";</p><p> when "001001000" => --15</p><p> temp := "10101";</p><p> when &q
69、uot;001000100" => --16</p><p> temp := "10110";</p><p> when "001000010" => --17</p><p> temp := "10111";</p><p> when &q
70、uot;001000001" => --18</p><p> temp := "11000";</p><p> when others =></p><p> temp := "00000";</p><p><b> end case;</b>
71、;</p><p> user <= reg(11 downto 9);</p><p> tempcon := not reg(8) & not reg (5 downto 0);</p><p> state <= action ;</p><p> -----------------------------
72、---------------------------------------------------------------------</p><p> when action =></p><p> con <= tempcon;</p><p> code <= temp;</p><p> cnta :=
73、 cnta+1;</p><p> if cnta = beeptime then</p><p> beep <= '0'; </p><p> state <= s0 ; </p><p><b> else</b></p><p>
74、 state <= action ;</p><p><b> end if;</b></p><p> when others =></p><p> state <= s0;</p><p><b> end case;</b></p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- vhdl課程設(shè)計(jì)報(bào)告---交通燈設(shè)計(jì)
- 數(shù)電課程設(shè)計(jì)報(bào)告vhdl電子鐘
- vhdl課程設(shè)計(jì)報(bào)告--多功能電子計(jì)時器
- 課程設(shè)計(jì)報(bào)告-基于vhdl的電子密碼鎖設(shè)計(jì)
- 課程設(shè)計(jì)---vhdl秒表計(jì)時器
- eda課程設(shè)計(jì)報(bào)告--基于vhdl的數(shù)字鐘的設(shè)計(jì)
- vhdl課程設(shè)計(jì)--數(shù)字鐘的設(shè)計(jì)
- vhdl課程設(shè)計(jì)--vhdl數(shù)字信號發(fā)送和接收電路
- 汽車尾燈課程設(shè)計(jì)vhdl
- vhdl課程設(shè)計(jì)---樂曲演奏電路設(shè)計(jì)
- vhdl課程設(shè)計(jì)-計(jì)算器模塊設(shè)計(jì)
- vhdl課程設(shè)計(jì)---多功能數(shù)字鐘
- eda課程設(shè)計(jì)報(bào)告---交通信號控制器的vhdl設(shè)計(jì)
- eda課程設(shè)計(jì)---樂曲硬件演奏電路的vhdl設(shè)計(jì)
- 樂曲硬件演奏電路的vhdl設(shè)計(jì) eda課程設(shè)計(jì)
- eda課程設(shè)計(jì)——基于vhdl語言的數(shù)字時鐘設(shè)計(jì)
- vhdl四位密碼鎖課程設(shè)計(jì)
- 課程設(shè)計(jì)---vhdl設(shè)計(jì)微波爐控制器
- 汽車尾燈課程設(shè)計(jì)++vhdl++eda
- 基于vhdl語言串口控制器課程設(shè)計(jì)
評論
0/150
提交評論