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

下載本文檔

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

文檔簡介

1、<p>  電子信息科學(xué)與技術(shù) 專業(yè)課程設(shè)計任務(wù)書</p><p><b>  一. 設(shè)計說明</b></p><p>  根據(jù)要求可自動出售兩種貨物,本文設(shè)計的自動售貨機(jī)可銷售cola 和 pepsi兩種飲料:售貨機(jī)可識別1元和0.5元的兩種貨幣,在一次購買過程中,可購買一個或多個商品,系統(tǒng)會自動計算所需錢數(shù)和找零的錢數(shù)并自動找零。另外有3個發(fā)光二極管、

2、6個LCD數(shù)碼管:兩個用來顯示所需金額,兩個用來顯示已付金額,兩個用來顯示找零數(shù)。</p><p>  1.1.1 流程說明</p><p>  本文設(shè)計的自動售貨機(jī)當(dāng)通電時,表示一次銷售的開始。顧客選擇一種商品或多種商品后就進(jìn)入投幣狀態(tài)。若不投幣,則自動返回初始狀態(tài)。投幣后,系統(tǒng)自動計算所投錢數(shù)。若投幣夠,則出貨并找零。若投幣不夠,如果顧客沒有繼續(xù)投幣,則退幣并回到初始狀態(tài)。本系統(tǒng)的投幣

3、銷售流程圖如圖所示:</p><p>  1.1.2各模塊說明</p><p>  本文設(shè)計的自動售貨機(jī)總體分三個模塊:總控模塊,二進(jìn)制譯碼模塊、BCD碼譯碼模塊。</p><p>  總控模塊:總控模塊是本系統(tǒng)最重要的模塊,該模塊大體有5個輸入端口和6個輸出端口。其輸入端口包括clk、coin1(投入一元貨幣)、coin5(投入0.5元貨幣)、cola(選擇col

4、a)、pepsi(選擇pepsi),輸出端口有paid(已投入多少錢)、needed(還需多少錢)moneyout(找零)、success(燈亮表示交易成功)、failure(燈亮表示交易失?。howmoneyout(燈亮表示正在找零)。該模塊實現(xiàn)了本系統(tǒng)最重要的交易過程,包括選擇商品、投入貨幣,計算剩余金額,找零出貨等。</p><p>  二進(jìn)制譯碼模塊:該模塊有一個輸入端口和兩個輸出端口。輸入端口是一個

5、8位的二進(jìn)制數(shù)輸出端口bcd0、bcd1是兩個4位的BCD碼。該模塊的主要的功能是實現(xiàn)將主控模塊輸出的二進(jìn)制數(shù)(paid、needed、moneyout)轉(zhuǎn)換成BCD碼,以便輸出到七段數(shù)碼管上顯示出來。該模塊的原理是將一個8位的二進(jìn)制轉(zhuǎn)換成2個4位的BCD碼,分為高四位和低四位。</p><p>  BCD碼譯碼模塊:該模塊有一個輸入端口和一個輸出端口</p><p>  1.1.3 程序

6、設(shè)計</p><p>  主控模塊完整程序如下:</p><p>  Library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity shouhuoji is

7、</p><p>  port(clk: in std_logic;</p><p>  coin1:in std_logic;</p><p>  coin5:in std_logic;</p><p>  cola:in std_logic;</p><p>  pepsi:in std_logic;</p&

8、gt;<p>  paid:out std_logic_vector(7 downto 0);</p><p>  needed:out std_logic_vector(7 downto 0);</p><p>  success:out std_logic;</p><p>  failure:out std_logic;</p>&

9、lt;p>  showmoneyout:out std_logic;</p><p>  moneyout:out std_logic_vector(7 downto 0));</p><p>  end shouhuoji;</p><p>  architecture behav of shouhuoji is</p><p> 

10、 type state_type is (qa,qb,qe,qc,qg,qd,qf);--定義七個狀態(tài)</p><p>  signal current_state :state_type:=qa;</p><p>  signal q:integer range 0 to 100; </p><p><b>  begin</b></p

11、><p>  process(clk)</p><p>  variable paidtemp:std_logic_vector(7 downto 0);--定義變量</p><p>  variable neededtemp:std_logic_vector(7 downto 0);</p><p>  variable backmoney:s

12、td_logic_vector(7 downto 0);</p><p>  variable pricetemp:std_logic_vector(7 downto 0);</p><p><b>  begin</b></p><p>  if clk'event and clk='1' then</p>

13、<p>  case current_state is </p><p>  when qa=>paidtemp:="00000000";neededtemp:="00000000";</p><p>  backmoney:="00000000";pricetemp:="00000000"

14、;q<=0;</p><p>  showmoneyout<='0';moneyout<="00000000";paid<="00000000";</p><p>  needed<="00000000";failure<='0';success<='

15、;0';</p><p>  if cola='1' or pepsi='1' then current_state<=qb;</p><p>  if cola='1' then pricetemp:=pricetemp+"00001111";</p><p>  neededtem

16、p:=pricetemp;</p><p><b>  Else </b></p><p>  pricetemp:=pricetemp+"00010100";</p><p>  neededtemp:=pricetemp;</p><p><b>  end if;</b>&

17、lt;/p><p><b>  end if;</b></p><p>  paid<=paidtemp;</p><p>  needed<=neededtemp;</p><p>  when qb=>if coin1='1' or coin5='1' then</

18、p><p>  if coin1='1'then paidtemp:=paidtemp+"00001010";</p><p><b>  else </b></p><p>  paidtemp:=paidtemp+"00000101";</p><p><b&

19、gt;  end if;</b></p><p>  if paidtemp>=pricetemp then backmoney:=paidtemp-pricetemp;</p><p>  neededtemp:="00000000";current_state<=qd;</p><p>  else neededte

20、mp:=pricetemp-paidtemp;backmoney:="00000000";</p><p>  current_state<=qc;q<=0;</p><p><b>  end if;</b></p><p>  paid<=paidtemp;</p><p>  

21、needed<=neededtemp;</p><p><b>  end if;</b></p><p>  if q<8 then q<=q+1;</p><p>  if cola='1' or pepsi='1'then q<=0;</p><p>  if

22、 cola='1' then pricetemp:=pricetemp+"00001111";</p><p>  neededtemp:=neededtemp+"00001111";</p><p><b>  else </b></p><p>  pricetemp:=pricete

23、mp+"00010100";</p><p>  neededtemp:=neededtemp+"00010100";</p><p><b>  end if;</b></p><p>  paid<=paidtemp;</p><p>  needed<=neede

24、dtemp;</p><p><b>  end if;</b></p><p>  else current_state<=qe;q<=0;</p><p><b>  end if;</b></p><p>  when qe=>failure<='1';

25、</p><p>  if q<4 then q<=q+1;</p><p>  else current_state<=qa;q<=0;</p><p><b>  end if;</b></p><p>  when qc=>if coin1='1' or coin5=&

26、#39;1' then</p><p>  if coin1='1'then paidtemp:=paidtemp+"00001010";</p><p><b>  else </b></p><p>  paidtemp:=paidtemp+"00000101";</p&

27、gt;<p><b>  end if;</b></p><p>  if paidtemp>=pricetemp then</p><p>  backmoney:=paidtemp-pricetemp;</p><p>  neededtemp:="00000000";current_state<

28、;=qd;</p><p>  else neededtemp:=pricetemp-paidtemp;backmoney:="00000000";</p><p>  current_state<=qc;</p><p><b>  end if;</b></p><p>  paid<

29、=paidtemp;</p><p>  needed<=neededtemp;</p><p><b>  end if;</b></p><p>  if coin1/='1'and coin5/='1' then</p><p>  if q<10 then q<=

30、q+1;</p><p>  else current_state<=qg;</p><p><b>  end if;</b></p><p>  else q<=0;</p><p><b>  end if;</b></p><p>  when qg=&g

31、t;failure<='1';</p><p>  showmoneyout<='1';moneyout<=paidtemp;</p><p>  current_state<=qf;q<=0;</p><p>  success<='0';</p><p>

32、  when qd=>success<='1';</p><p>  if backmoney>"00000000"then showmoneyout<='1';</p><p>  moneyout<=backmoney;</p><p><b>  end if;<

33、/b></p><p>  current_state<=qf;q<=0;</p><p>  when qf=>if q<4 then q<=q+1;</p><p>  else current_state<=qa;q<=0;</p><p><b>  end if;</b

34、></p><p><b>  end case;</b></p><p><b>  else </b></p><p><b>  end if;</b></p><p>  end process;</p><p>  end behav;&

35、lt;/p><p>  BCD譯碼模塊完整程序如下:</p><p>  Library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity code1 is<

36、/p><p><b>  port(</b></p><p>  b:in std_logic_vector(7 downto 0);</p><p>  bcd0:out std_logic_vector(3 downto 0);</p><p>  bcd1:out std_logic_vector(3 downto 0

37、)</p><p><b>  ) ;</b></p><p>  end code1;</p><p>  architecture one of code1 is</p><p><b>  begin </b></p><p>  process(b)</p&

38、gt;<p><b>  begin</b></p><p><b>  case b is</b></p><p>  when"00000000"=>bcd0<="0000";bcd1<="0000";--譯碼“0”;</p><p

39、>  when"00000001"=>bcd0<="0001";bcd1<="0000";--譯碼“1”;</p><p>  when"00000010"=>bcd0<="0010";bcd1<="0000";--譯碼“2”;</p>&

40、lt;p>  when"00000011"=>bcd0<="0011";bcd1<="0000";--譯碼“3”;</p><p>  when"00000100"=>bcd0<="0100";bcd1<="0000";--譯碼“4”;</p>

41、;<p>  when"00000101"=>bcd0<="0101";bcd1<="0000";--譯碼“5”;</p><p>  when"00000110"=>bcd0<="0110";bcd1<="0000";</p>&

42、lt;p>  when"00000111"=>bcd0<="0111";bcd1<="0000";</p><p>  when"00001000"=>bcd0<="1000";bcd1<="0000";</p><p>  wh

43、en"00001001"=>bcd0<="1001";bcd1<="0000";</p><p>  when"00001010"=>bcd0<="0000";bcd1<="0001";</p><p>  when"0000

44、1011"=>bcd0<="0001";bcd1<="0001";</p><p>  when"00001100"=>bcd0<="0010";bcd1<="0001";</p><p>  when"00001101"=&

45、gt;bcd0<="0011";bcd1<="0001";</p><p>  when"00001110"=>bcd0<="0100";bcd1<="0001";</p><p>  when"00001111"=>bcd0<=

46、"0101";bcd1<="0001";</p><p>  when"00010000"=>bcd0<="0110";bcd1<="0001";</p><p>  when"00010001"=>bcd0<="0111&q

47、uot;;bcd1<="0001";</p><p>  when"00010010"=>bcd0<="1000";bcd1<="0001";</p><p>  when"00010011"=>bcd0<="1001";bcd1<

48、;="0001";</p><p>  when"00010100"=>bcd0<="0000";bcd1<="0010";譯碼“20”</p><p>  when others=>null;</p><p><b>  end case;</b

49、></p><p>  end process;</p><p><b>  end one;</b></p><p>  頂層模塊完整程序如下:</p><p>  library IEEE;</p><p>  use IEEE.STD_LOGIC_1164.ALL;</p>

50、<p>  use IEEE.STD_LOGIC_ARITH.ALL;</p><p>  use IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  entity top is</p><p>  Port( clk1:in std_logic;</p><p>  C1,C5,P1_5,P2:in

51、 std_logic;</p><p>  paid_lcd0,paid_lcd1,needed_lcd0,needed_lcd1,Mout_lcd0,Mout_lcd1:out</p><p>  std_logic_vector(3 downto 0);</p><p>  s,f,showout :out std_logic );</p><

52、;p><b>  end top;</b></p><p>  architecture one of top is</p><p>  component shouhuoji</p><p>  port ( clk:in std_logic;</p><p>  coin1:in std_logic;<

53、/p><p>  coin5:in std_logic;</p><p>  cola:in std_logic;</p><p>  pepsi:in std_logic;</p><p>  paid:out std_logic_vector(7 downto 0);</p><p>  needed:out std_

54、logic_vector(7 downto 0);</p><p>  success:out std_logic;</p><p>  failure:out std_logic;</p><p>  showmoneyout:out std_logic;</p><p>  moneyout:out std_logic_vector(7

55、downto 0)</p><p><b>  ); </b></p><p>  end component;</p><p>  component code1</p><p><b>  port(</b></p><p>  b:in std_logic_vector

56、( 7 downto 0);</p><p>  bcd0:out std_logic_vector(3 downto 0);</p><p>  bcd1:out std_logic_vector(3 downto 0)</p><p><b>  );</b></p><p>  end component;<

57、/p><p>  signal p,n,mo:std_logic_vector( 7 downto 0);</p><p>  --signal s1,s2,s3,s4,s5,s6:std_logic_vector(3 downto 0);</p><p><b>  begin </b></p><p>  u0:shou

58、huoji--各模塊連接</p><p>  port map(clk=>clk1,coin1=>C1,coin5=>C5,cola=>P1_5,pepsi=>P2,</p><p>  success=>s,failure=>f,showmoneyout=>showout,paid=>p,needed=>n,moneyout=&

59、gt;mo);</p><p>  u1:code1 port map(b=>p,bcd0=>paid_lcd0,bcd1=>paid_lcd1);</p><p>  u2:code1 port map(b=>n,bcd0=>needed_lcd0,bcd1=>needed_lcd1);</p><p>  u3:code1 p

60、ort map(b=>mo,bcd0=>Mout_lcd0,bcd1=>Mout_lcd1); </p><p><b>  end one;</b></p><p>  1.1.4各模塊的連接</p><p>  各模塊的連接如圖所示:</p><p>  售貨機(jī)主控系統(tǒng)和譯碼器模塊圖&l

61、t;/p><p><b>  售貨機(jī)頂層模塊</b></p><p>  2、1 主控模塊的仿真</p><p>  上圖表示顧客選擇了pepsi飲料后,且投了2個一元的硬幣。Success為高電平,代表售貨機(jī)有飲料售出。且余額為0.</p><p>  上圖表示顧客選擇了pepsi飲料后,且投1個一元的硬幣和一個0.5元的

62、硬幣。failure為高電平,代表售貨機(jī)無飲料售出。且余額為已投的金額,將錢退還給顧客。.</p><p>  2.BCD碼譯碼的仿真</p><p>  上圖表示自動售貨機(jī)的譯碼系統(tǒng),上圖表示將8位數(shù)字轉(zhuǎn)換成4位BCD碼。</p><p>  3.TOP文件的仿真</p><p>  上圖表示顧客選擇了pepsi飲料后,且投了2個一元的硬幣

63、。Success為高電平,代表售貨機(jī)有飲料售出。且余額為0.</p><p>  上圖表示顧客選擇了pepsi飲料后,且投1個一元的硬幣和一個0.5元的硬幣。Failure 為高電平,代表售貨機(jī)無飲料售出。Showout為退幣指示燈。.Mout_lcd0和Mout_lcd1,顯示退幣的金額。Paided _lcd0 和Paided_lcd1 needed _lcd0 和needed_lcd1 分別顯示已付金額和還

64、需要的金額數(shù)。</p><p><b>  下載驗證</b></p><p>  在無數(shù)次的調(diào)試與修改中,下載驗證能夠?qū)崿F(xiàn)題目的要求</p><p>  4. 參考文獻(xiàn):[1] 焦素敏.EDA課程設(shè)計指導(dǎo)書.鄭州:河南工業(yè)大學(xué),2008</p><p>  [2] 潘松,黃繼業(yè).EDA技術(shù)實用教程.北京:科學(xué)出版社,20

65、02</p><p>  [3] 王國棟,潘松等.VHDL實用教程.成都:電子科技大學(xué)出版社,2000</p><p>  [4] 張亦華,延明.數(shù)字電路EDA入門.北京:電子工業(yè)出版社,2003</p><p>  [5] http://www.ele-diy.com/ 中國電子制作網(wǎng) 網(wǎng)站</p><p><b>  5.

66、心得體會</b></p><p>  自動售貨機(jī)系統(tǒng)的設(shè)計經(jīng)過一個星期的設(shè)計已經(jīng)全部完成,能按預(yù)期的效果進(jìn)行多次購買、找零出貨、并且在數(shù)碼管上顯示出已投貨幣的金額、還需金額、找零,同時有指示燈提示交易成功、交易失敗、正在找零。在自動售貨機(jī)系統(tǒng)的3個模塊中,最主要的是主控模塊,其次的還有二進(jìn)制譯碼模塊和BCD碼譯碼模塊。各模塊完成后,將它們組合成完整的自動售貨機(jī)系統(tǒng)。在設(shè)計過程中還需改進(jìn)的是。本文所用的

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論