2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  數(shù)字邏輯課程設(shè)計報告</p><p>  題 目: 紅外線數(shù)據(jù)傳輸系統(tǒng) </p><p>  姓 名: </p><p>  同 組 人: </p><p>  班 級: </p><p> 

2、 學(xué) 號: </p><p><b>  2011/9/27</b></p><p><b>  目錄</b></p><p><b>  1. 實驗?zāi)康?</b></p><p><b>  1.1 目的3</b></p

3、><p><b>  1.2 要求3</b></p><p><b>  2. 實驗內(nèi)容3</b></p><p><b>  2.1 題目3</b></p><p><b>  2.2 簡介3</b></p><p><

4、b>  2.3 輸入4</b></p><p><b>  2.4 輸出4</b></p><p>  3. 實驗所用儀器4</p><p>  3.1 實驗軟件環(huán)境4</p><p>  3.2 實驗硬件環(huán)境4</p><p><b>  4. 實驗設(shè)計5

5、</b></p><p>  4.1 系統(tǒng)結(jié)構(gòu)圖5</p><p>  4.2 詳細設(shè)計5</p><p>  4.3 接口設(shè)計7</p><p><b>  5. 實驗步驟8</b></p><p>  5.1 編寫VHDL代碼8</p><p>&

6、lt;b>  5.2 連線14</b></p><p>  5.3 記錄與調(diào)試14</p><p>  6. 結(jié)果分析14</p><p>  6.1 老師檢查測試14</p><p>  6.2 時間圖分析14</p><p><b>  7. 其他15</b>&l

7、t;/p><p>  7.1 改進方案15</p><p>  7.2 參考文獻15</p><p><b>  實驗?zāi)康?lt;/b></p><p><b>  1.1 目的</b></p><p>  通過硬件描述語言VHDL的編程,深入了解并掌握可編程芯片PLD的設(shè)計技術(shù),

8、加強對學(xué)生對《數(shù)字邏輯》課程所學(xué)的只是綜合運用能力。培養(yǎng)學(xué)生的創(chuàng)造性思維能力和獨立解決實際問題的能力。</p><p><b>  1.2 要求</b></p><p>  能夠較全面地應(yīng)用課程中所學(xué)的基本理論和基本方法,完成從設(shè)計邏輯電路到設(shè)計簡單數(shù)字系統(tǒng)的過渡。</p><p>  能夠獨立思考、獨立查閱資料,獨立設(shè)計規(guī)定的系統(tǒng)</p

9、><p>  能夠獨立地完成實施過程,包括安裝、布線、測試和排除故障。</p><p><b>  實驗內(nèi)容</b></p><p><b>  2.1 題目</b></p><p><b>  紅外線數(shù)據(jù)傳輸系統(tǒng)</b></p><p><b>

10、  2.2 簡介</b></p><p>  紅外線傳輸系統(tǒng)包括發(fā)送方和接收方兩端,都可以單獨進行初始化清零處理。在發(fā)送端可以設(shè)置準備發(fā)送的8位數(shù)據(jù)信息,連同一個偶校驗位一起發(fā)送。接收端接收到8位的數(shù)據(jù)信息和一位偶校驗信息后,顯示接收到的數(shù)據(jù)和校驗信息,并根據(jù)偶校驗判定接收到的信息是否出錯。</p><p><b>  2.3 輸入</b></p&g

11、t;<p><b>  如上圖所示:</b></p><p>  開關(guān)K1~K8(電平信號),發(fā)送端清零開關(guān)(電平信號),發(fā)送按鈕(脈沖信號),置數(shù)(電平信號),接收端清零開關(guān)(電平信號)。</p><p><b>  2.4 輸出</b></p><p><b>  如前面圖所示:</b&g

12、t;</p><p><b>  發(fā)送端:</b></p><p>  發(fā)送數(shù)據(jù)的8位數(shù)據(jù)信息用3個數(shù)碼管顯示(分別為2bits、3bits、3bits),正在發(fā)送指示燈,校驗碼指示燈。</p><p><b>  接收端:</b></p><p>  接收的8位數(shù)據(jù)信息用3個數(shù)碼管顯示(分別為2b

13、its、3bits、3bits),</p><p>  校驗碼指示燈,接收錯指示燈。</p><p><b>  實驗所用儀器</b></p><p>  3.1 實驗軟件環(huán)境</p><p>  ispLEVER Project Navigator</p><p>  3.2 實驗硬件環(huán)境<

14、;/p><p>  Family: ispLSI 1K Device</p><p>  Device: ispLSI032E</p><p>  Speed Grade:70</p><p>  Package type : 84PLCC</p><p>  Part Name: ispLSI1032E-

15、70Lj84</p><p>  Density:6000 logic cells:128i/O CELLS:64i/O pins:64</p><p>  Dedicate:8 Output:2Icc: 190</p><p><b>  實驗設(shè)計</b></p><p><b>  4.1

16、系統(tǒng)結(jié)構(gòu)圖</b></p><p>  紅外數(shù)據(jù)傳輸系統(tǒng)的界面圖如下所示:</p><p>  首先分成2個獨立的模塊:發(fā)送端和接收端。</p><p>  發(fā)送端由兩個計數(shù)器、一個移位寄存器和3個數(shù)碼管組成。計數(shù)器1用來分頻,計數(shù)器2用來控制狀態(tài)。在實際實現(xiàn)中可用整數(shù)代替計數(shù)器內(nèi)部的計數(shù)單位,使邏輯更加簡單、清楚。移位寄存器根據(jù)計數(shù)器2的計數(shù)和各種操作

17、按鈕完成清零、置數(shù)和發(fā)送數(shù)據(jù)包括發(fā)送校驗碼等操作。在實際實現(xiàn)中,移位寄存器使用循環(huán)右移,每移一位就偶校驗一下。數(shù)碼管只負責顯示,在循環(huán)移位過程中</p><p>  接收端也有兩個計數(shù)器,兩個計數(shù)器的功能與發(fā)送端基本相同。接收端的移位寄存器則是用來接收數(shù)據(jù)的,接收前是清零準備狀態(tài),接收時,每接收一位就右移一位。</p><p><b>  4.2 詳細設(shè)計</b>&l

18、t;/p><p>  由于發(fā)送端和接收端可能屬于兩個獨立的設(shè)備,考慮到系統(tǒng)運行的可靠性,在這里采用的是在工作CP的基礎(chǔ)上加以分頻,而計數(shù)器1和計數(shù)器3就是因此存在的。通過分頻,將原來的頻率變?yōu)?/16倍頻CP1和CP2。</p><p><b>  發(fā)送端:</b></p><p>  計數(shù)器2根據(jù)CP1計數(shù),然后根據(jù)計數(shù)器2的計數(shù)分為不同的狀態(tài),

19、根據(jù)實驗指導(dǎo)書,發(fā)送端共有“準備好態(tài)”、“固定高電平態(tài)”、“發(fā)送有效數(shù)據(jù)態(tài)”、“發(fā)送校驗碼態(tài)”四個狀態(tài),發(fā)送校驗碼之后,計數(shù)器2繼續(xù)計數(shù)到0,隨后自動回到“準備好態(tài)”。4種狀態(tài)的轉(zhuǎn)換關(guān)系如下:</p><p>  注意:在實現(xiàn)中,state:0狀態(tài)會使計數(shù)器2停止計數(shù),并將計數(shù)器2的初始值變?yōu)?,從而回到state:0狀態(tài)。</p><p>  在編碼實現(xiàn)中,計數(shù)器1一個進程,實現(xiàn)分頻;計

20、數(shù)器2一個進程,實現(xiàn)以上的狀態(tài)轉(zhuǎn)換。移位寄存器進程則是根據(jù)各個狀態(tài)采取不同的操作:</p><p>  狀態(tài)0:準備發(fā)送,此時可以清零,置數(shù)</p><p>  狀態(tài)1:連續(xù)發(fā)送3個高電平,此后計數(shù)器2計數(shù)達到7</p><p>  狀態(tài)2:開始發(fā)送有效位,每發(fā)送一位循環(huán)向后移一位</p><p>  狀態(tài)3:發(fā)送校驗碼,然后計數(shù)器2繼續(xù)計數(shù)

21、,回到狀態(tài)0</p><p><b>  接收端:</b></p><p>  接收端的接收過程為了與發(fā)送端保持一致,采用了相同的設(shè)計思想,計數(shù)器1一個進程實現(xiàn)分頻,計數(shù)器2一個進程實現(xiàn)各個狀態(tài)間的轉(zhuǎn)換,移位寄存器進程也是不同的狀態(tài)采取不同的操作。</p><p>  狀態(tài)0:清零,準備接收。</p><p>  狀態(tài)1

22、:遇見高電平,變?yōu)闋顟B(tài)1,開始驗證3個高電平</p><p>  狀態(tài)2:開始接收有效位,每接收一位偶校驗一位,寄存器右移一位</p><p>  狀態(tài)3:接收校驗位,并驗證是否正確接收</p><p>  注意:在實現(xiàn)中,state:0狀態(tài)會使計數(shù)器2停止計數(shù),但沒將將計數(shù)器2的初始值變?yōu)?,這一步是在檢測到高電平之后執(zhí)行的,從而回到state:0狀態(tài)。</

23、p><p><b>  4.3 接口設(shè)計</b></p><p>  發(fā)送端emiter:</p><p>  發(fā)送端需要的接口如下:</p><p>  接收端collecter:</p><p><b>  頂層模塊top:</b></p><p>&

24、lt;b>  實驗步驟</b></p><p>  5.1 編寫VHDL代碼</p><p><b>  源代碼:</b></p><p>  【emitter.vhd】</p><p>  library ieee;</p><p>  use ieee.std_logic_1

25、164.all;</p><p>  entity emiter is</p><p>  PORT(SET, SEND, CLR, CP:IN std_logic;</p><p>  datain: IN std_logic_vector(7 DOWNTO 0);</p><p>  dataout : OUT std_logic_vec

26、tor(7 DOWNTO 0);</p><p>  flag : OUT std_logic;</p><p>  ed : OUT std_logic;</p><p>  cbit : OUT std_logic);</p><p><b>  end;</b></p><p>  arch

27、itecture rtl of emiter is</p><p>  SIGNAL temp : bit_vector(7 DOWNTO 0);</p><p>  SIGNAL CP1 : std_logic;</p><p>  SIGNAL state : integer range 0 to 4;</p><p>  SIGNAL

28、t_flag, t_ed : std_logic;</p><p>  SIGNAL t_checkbit:std_logic := '0';</p><p><b>  begin</b></p><p>  flag <= t_flag;</p><p>  ed <= t_ed;<

29、/p><p>  cbit <= t_checkbit;</p><p>  dataout(0) <= std_logic(temp(0));</p><p>  dataout(1) <= std_logic(temp(1));</p><p>  dataout(2) <= std_logic(temp(2));&l

30、t;/p><p>  dataout(3) <= std_logic(temp(3));</p><p>  dataout(4) <= std_logic(temp(4));</p><p>  dataout(5) <= std_logic(temp(5));</p><p>  dataout(6) <= std_l

31、ogic(temp(6));</p><p>  dataout(7) <= std_logic(temp(7));</p><p><b>  --分頻</b></p><p>  ct1:PROCESS(CP)</p><p>  variable i : integer range 0 to 15 := 0;

32、</p><p><b>  begin</b></p><p>  if(CP'EVENT and CP='1') then</p><p><b>  i := i+1;</b></p><p>  if(i<8)then</p><p> 

33、 CP1 <= '0';</p><p><b>  else</b></p><p>  CP1 <= '1';</p><p><b>  end if;</b></p><p><b>  end if;</b></p&g

34、t;<p>  end process ct1;</p><p><b>  --狀態(tài)轉(zhuǎn)換</b></p><p>  trans:PROCESS(CP1, CLR, SEND)</p><p>  variable j : integer range 0 to 15;</p><p><b> 

35、 begin</b></p><p>  if(CLR='1')then</p><p>  state <= 0;</p><p><b>  j := 3;</b></p><p>  elsif (send='1' and state=0) then</p&g

36、t;<p>  state <= 1;</p><p>  elsif (CP1'EVENT and CP1='1' and state>0)then</p><p><b>  j := j+1;</b></p><p>  if(j=0) then</p><p> 

37、 state <= 0;</p><p><b>  j := 3;</b></p><p>  elsif(j<7)then</p><p>  state <= 1;</p><p>  elsif(j<15)then</p><p>  state <= 2;&

38、lt;/p><p>  elsif(j=15)then</p><p>  state <= 3;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process trans;</

39、p><p>  send:PROCESS(CP1, SET, CLR, state)</p><p><b>  begin</b></p><p>  if(state=0) then</p><p>  if(SET = '1') then</p><p>  temp(0) &l

40、t;= bit(datain(0));</p><p>  temp(1) <= bit(datain(1));</p><p>  temp(2) <= bit(datain(2));</p><p>  temp(3) <= bit(datain(3));</p><p>  temp(4) <= bit(data

41、in(4));</p><p>  temp(5) <= bit(datain(5));</p><p>  temp(6) <= bit(datain(6));</p><p>  temp(7) <= bit(datain(7));</p><p>  elsif (CLR='1') then</p

42、><p>  temp <= "00000000";</p><p><b>  end if;</b></p><p>  t_flag <= '0';</p><p>  t_ed <= '0';</p><p>  elsif

43、(CP1'EVENT and CP1='1')then</p><p>  case state is</p><p><b>  when 1 =></b></p><p>  t_ed <= '1';</p><p>  t_flag <= '1

44、9;;</p><p>  t_checkbit <= '0';</p><p><b>  when 2 =></b></p><p>  t_ed <= std_logic(temp(0));</p><p>  t_checkbit <= t_checkbit XOR t_e

45、d;</p><p>  temp <= temp ROR 1;</p><p><b>  when 3 =></b></p><p>  t_ed <= t_checkbit;</p><p><b>  end case;</b></p><p>&l

46、t;b>  end if;</b></p><p>  end process send;</p><p><b>  end rtl;</b></p><p>  【collector.vhd】</p><p>  library ieee;</p><p>  use iee

47、e.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity collector is</p><p>  PORT(data : IN std_logic;</p><p>  CP, CLR : IN std_logic;</p&g

48、t;<p>  cbit : OUT std_logic; --校驗碼,本來是滅的,</p><p>  flag : OUT std_logic; --正誤指示燈</p><p>  overflag : OUT std_logic;</p><p>  dataout : OUT std_logic_vector(7 DOWNTO 0));<

49、;/p><p><b>  end;</b></p><p>  architecture rtl of collector is</p><p>  SIGNAL CP2 : std_logic;</p><p>  SIGNAL t_cbit : std_logic;</p><p>  SIGN

50、AL t_flag, t_over : std_logic;</p><p>  SIGNAL ct_en : std_logic := '0';</p><p>  signal state : integer range 0 to 3 := 3;</p><p>  SIGNAL temp : bit_vector(7 DOWNTO 0);<

51、;/p><p><b>  begin</b></p><p>  cbit <= t_cbit;</p><p>  flag <= t_flag;</p><p>  overflag <= t_over;</p><p>  dataout(0) <= std_logic

52、(temp(0));</p><p>  dataout(1) <= std_logic(temp(1));</p><p>  dataout(2) <= std_logic(temp(2));</p><p>  dataout(3) <= std_logic(temp(3));</p><p>  dataout(4)

53、 <= std_logic(temp(4));</p><p>  dataout(5) <= std_logic(temp(5));</p><p>  dataout(6) <= std_logic(temp(6));</p><p>  dataout(7) <= std_logic(temp(7));</p><p

54、>  ct1:PROCESS(CP, state)</p><p>  variable i : integer range 0 to 15;</p><p><b>  BEGIN</b></p><p>  if(state=0) then</p><p><b>  i := 11;</b&g

55、t;</p><p>  elsif (CP'EVENT and CP='1') then</p><p><b>  i := i+1;</b></p><p>  if (i>4 and i<11) then</p><p>  CP2 <= '1';<

56、/p><p><b>  else</b></p><p>  CP2 <= '0';</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  END PROCESS

57、ct1;</p><p><b>  --狀態(tài)轉(zhuǎn)換</b></p><p>  trans:PROCESS(CP2, CLR)</p><p>  variable j : integer range 0 to 15;</p><p><b>  begin</b></p><p

58、>  if(CLR='1')then</p><p>  state <= 0;</p><p><b>  j := 3;</b></p><p>  elsif (state=0 and data='1') then</p><p>  state <= 1;<

59、/p><p><b>  j := 3;</b></p><p>  elsif (state=1 and data='0') then</p><p>  t_over <= '0';</p><p><b>  --j := 3;</b></p>

60、<p>  elsif (CP2'EVENT and CP2='1' and state>0)then</p><p><b>  j := j+1;</b></p><p>  if(j=0) then</p><p>  state <= 0;</p><p><b

61、>  --j := 3;</b></p><p>  elsif(j<7)then</p><p>  state <= 1;</p><p>  elsif(j>=7 and j <15) then</p><p>  state <= 2;</p><p><b

62、>  else</b></p><p>  state <= 3;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process trans;</p><p> 

63、 accept:PROCESS(CP2, state, data)</p><p><b>  BEGIN</b></p><p>  if(state=0) then</p><p>  if clr='1' then</p><p>  temp <= "00000000";

64、</p><p><b>  end if;</b></p><p>  elsif(CP2'EVENT AND CP2='1') then</p><p>  case state is</p><p><b>  when 1 =></b></p>&

65、lt;p>  t_cbit <= '0';</p><p><b>  when 2 =></b></p><p>  t_flag <= '1';</p><p>  temp <= temp ROR 1;</p><p>  temp(7) <= b

66、it(data);</p><p>  t_cbit <= t_cbit XOR data;</p><p><b>  when 3 =></b></p><p>  if(t_cbit = data) then</p><p>  t_flag <= '0';</p>

67、<p><b>  else</b></p><p>  t_flag <= '1';</p><p><b>  end if;</b></p><p><b>  end case;</b></p><p><b>  end if

68、;</b></p><p>  END PROCESS accept;</p><p><b>  end rtl;</b></p><p><b>  【top.vhd】</b></p><p>  library ieee;</p><p>  use iee

69、e.std_logic_1164.all;</p><p>  entity top is</p><p>  PORT(SET, SEND, E_CLR, C_CLR, CP, c_data: IN std_logic;</p><p>  e_datain : IN std_logic_vector(7 DOWNTO 0);</p><p&g

70、t;  e_dataout : OUT std_logic_vector(7 DOWNTO 0);</p><p>  e_flag : OUT std_logic;</p><p>  e_cbit : OUT std_logic;</p><p>  e_data: OUT std_logic;</p><p>  c_cbit : O

71、UT std_logic; --校驗碼,本來是滅的,</p><p>  c_flag : OUT std_logic; --正誤指示燈</p><p>  c_overflag : OUT std_logic;--傳送完標志</p><p>  c_dataout : OUT std_logic_vector(7 DOWNTO 0));</p>

72、<p><b>  end;</b></p><p>  architecture rtl of top is</p><p>  component emiter is</p><p>  PORT(SET, SEND, CLR, CP:IN std_logic;</p><p>  datain: IN s

73、td_logic_vector(7 DOWNTO 0);</p><p>  dataout : OUT std_logic_vector(7 DOWNTO 0);</p><p>  flag : OUT std_logic;</p><p>  ed : OUT std_logic;</p><p>  cbit : OUT std_lo

74、gic);</p><p>  end component;</p><p>  component collector is</p><p>  PORT(data : IN std_logic;</p><p>  CP, CLR : IN std_logic;</p><p>  cbit : OUT std_l

75、ogic; --校驗碼,本來是滅的,</p><p>  flag : OUT std_logic; --正誤指示燈</p><p>  overflag : OUT std_logic;--傳送完標志</p><p>  dataout : OUT std_logic_vector(7 DOWNTO 0));</p><p>  end

76、 component;</p><p><b>  begin</b></p><p>  cunit1:emiter port map(SET, SEND, E_CLR, CP, e_datain, e_dataout, e_flag, e_data, e_cbit);</p><p>  cunit2:collector port map(

77、c_data, CP, C_CLR, c_cbit, c_flag, c_overflag, c_dataout);</p><p><b>  end rtl;</b></p><p><b>  5.2 連線</b></p><p>  編寫好代碼后,設(shè)置引腳圖,并燒錄成熔絲圖,然后下載到ispLSI032E上。然后檢

78、測每一根線是不是好的,每一個引腳是否正常,以及開關(guān)指示燈是否正常,若不正常再加以修改。最后按照引腳圖連線,檢查無誤后就可以調(diào)試運行。</p><p><b>  5.3 記錄與調(diào)試</b></p><p>  運行時不一定能通過,由于VHDL這門語言的特性,會產(chǎn)生很多出乎意料的結(jié)果,所以需要不停調(diào)試,不斷學(xué)習,不停修改代碼,才能使程序趨于完善。</p>

79、<p><b>  結(jié)果分析</b></p><p>  6.1 老師檢查測試</p><p>  經(jīng)過老師檢查,有一個發(fā)送成功指示燈閃3下沒完成,在接收端接收高電平的時候進行干擾測試沒有通過,其余的全部通過。有一點我也很意外,就是接收有效位時,對其進行干擾,竟然還能發(fā)送成功,究其原因,我也不能說出其所以然。</p><p>  經(jīng)過

80、對源代碼的解析,發(fā)現(xiàn)在接收端在檢測到高電平后,沒有對后面的高電平次數(shù)進行驗證或者說驗證是無效的,以致于出現(xiàn)高電平干擾測試失敗。</p><p>  接收端接收成功后指示燈閃3下,本來做的只是一個指示燈,像發(fā)送端一樣,但是效果不好,頂多也就是從亮到滅,或者從滅到亮,沒有“閃”的效果。</p><p><b>  6.2 時間圖分析</b></p><

81、p>  紅外數(shù)據(jù)傳輸系統(tǒng)的時間圖如下:</p><p>  我們所實現(xiàn)的穩(wěn)定性很高,可以在上兆Hz下面正常工作,而我們采取的方案就是控制采樣脈沖,使采樣脈沖只在很窄的時鐘周期下采樣,然后使采樣脈沖盡量落在發(fā)送數(shù)據(jù)的中間位置上。然而其能在接收有效位的時候仍能發(fā)送成功,我想其原因不僅是采樣脈沖的優(yōu)化,還有干擾測試時的不連續(xù)性(怕燒壞器件),因此才最好導(dǎo)致干擾沒有被檢測出來的下場。</p><

82、p><b>  其他</b></p><p><b>  7.1 改進方案</b></p><p>  在接收高電平時,加入完善的高電平檢測邏輯,然后在接收成功后,使接收指示燈閃三下,而不是通過一個“亮”或者“滅”來表示是否接收是否正確。</p><p><b>  7.2 參考文獻</b>&l

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論