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

下載本文檔

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

文檔簡介

1、<p><b>  摘 要</b></p><p>  本課程設(shè)計(jì)給出了一種基于FPGA的多功能數(shù)字時鐘方法,采用EDA作為開發(fā)工具,VHDL語言和圖形輸入為硬件描述語言,Quartus II 9.0作為運(yùn)行程序的平臺,編寫的程序經(jīng)過調(diào)試運(yùn)行,波形仿真驗(yàn)證,下載到EDA實(shí)驗(yàn)箱的FPGA芯片,實(shí)現(xiàn)了設(shè)計(jì)目</p><p>  該系統(tǒng)主要由分頻模塊、控制模塊、

2、計(jì)時模塊、顯示模塊組成。經(jīng)編譯和仿真所設(shè)計(jì)的程序,在可編程邏輯器件上下載驗(yàn)證,能夠在數(shù)碼管上完成年、月、日和時、分、秒的分別顯示,由按鍵輸入進(jìn)行數(shù)字時鐘的校時、清零、暫停功能。</p><p>  關(guān)鍵詞:EDA技術(shù);FPGA;數(shù)碼管</p><p><b>  Abstract</b></p><p>  The course design

3、gives a FPGA-based multifunctional digital clock using EDA as a development tool, VHDL language and graphical input hardware description language, the Quartus II 9.0 as a platform for running the program, written procedu

4、res debugging and running, the waveform simulation downloaded to the FPGA chip to achieve the design goals.</p><p>  The design for a multi-functional digital clock, with a year, month, day, hours, minutes a

5、nd seconds count display to a 24-hour cycle count, with the pause time, clear function and the hours and minutes setting function.</p><p>  The main system is made up of frequency module, control module, tim

6、e module, display module. After compiling the design and simulation procedures, the programmable logic device to download verification, the system can complete the year, month, day and the hours, minutes and seconds resp

7、ectively, using keys to modify, clear , start and stop the digital clock.</p><p>  Key words:EDA technology; FPGA; digital clock; VHDL language; digital tube</p><p><b>  目 錄</b><

8、/p><p>  1緒論.....1</p><p>  1.1 課程背景1</p><p>  1.2 設(shè)計(jì)目的1</p><p>  2總體設(shè)計(jì)流程說明2</p><p>  2.1數(shù)字時鐘的工作原理2</p><p>  3 單元模塊設(shè)計(jì)流程5</p>&

9、lt;p>  3.1分頻模塊5</p><p>  3.2計(jì)數(shù)模塊5</p><p>  3.3控制模塊7</p><p>  4系統(tǒng)調(diào)試說明及分析10</p><p><b>  5總結(jié)11</b></p><p><b>  6附錄12</b>

10、;</p><p><b>  緒論</b></p><p><b>  1.1課程背景</b></p><p>  如今電子產(chǎn)品正向功能多元化,體積最小化,功耗最低化的方向發(fā)展。它與傳統(tǒng)的電子產(chǎn)品在設(shè)計(jì)上的顯著區(qū)別師大量使用大規(guī)模可編程邏輯器件,使產(chǎn)品的性能提高,體積縮小,功耗降低.同時廣泛運(yùn)用現(xiàn)代計(jì)算機(jī)技術(shù),提高產(chǎn)品的

11、自動化程度和競爭力,縮短研發(fā)周期。EDA技術(shù)正是為了適應(yīng)現(xiàn)代電子技術(shù)的要求,吸收眾多學(xué)科最新科技成果而形成的一門新技術(shù)。</p><p>  EDA技術(shù)以大規(guī)??删幊踢壿嬈骷樵O(shè)計(jì)載體,以硬件描述語言為系統(tǒng)邏輯描述主要表達(dá)方式,以計(jì)算機(jī)、大規(guī)??删幊踢壿嬈骷拈_發(fā)軟件及實(shí)驗(yàn)開發(fā)系統(tǒng)為設(shè)計(jì)工具,通過有關(guān)的開發(fā)軟件,自動完成用軟件的方式設(shè)計(jì)的電子系統(tǒng)到硬件系統(tǒng)的邏輯編譯,邏輯化簡,邏輯分割,邏輯映射,編程下載等工作。

12、最終形成集成電子系統(tǒng)或?qū)S眉尚酒囊婚T新技術(shù)。</p><p>  這次課程設(shè)計(jì)利用VHDL硬件描述語言結(jié)合可編程邏輯器件進(jìn)行的,并通過數(shù)碼管動態(tài)顯示計(jì)時結(jié)果。利用可編程邏輯器件具有其他方式?jīng)]有的特點(diǎn),它具有易學(xué),方便,新穎,有趣,直觀,設(shè)計(jì)與實(shí)驗(yàn)項(xiàng)目成功率高,理論與實(shí)踐結(jié)合緊密,體積小,容量大,I/O口豐富,易編程等特點(diǎn),應(yīng)用非常方便。所以,本次設(shè)計(jì)采用可編程邏輯器件實(shí)現(xiàn)。</p><p&

13、gt;<b>  1.2設(shè)計(jì)目的</b></p><p>  現(xiàn)在電子技術(shù)的應(yīng)用無處不在,電子技術(shù)正在不斷地改變我們的生活,改變著我們的世界。在這快速發(fā)展的年代,時間對人們來說是越來越寶貴,在快節(jié)奏的生活時,一旦遇到重要的事情而忘記了時間,這將會帶來很大的損失。因此我們需要一個定時系統(tǒng)來提醒這些忙碌的人。數(shù)字化的鐘表給人們帶來了極大的方便。近些年,隨著科技的發(fā)展和社會的進(jìn)步,人們對數(shù)字鐘的要

14、求也越來越高,傳統(tǒng)的時鐘已不能滿足人們的需求。多功能數(shù)字鐘不管在性能還是在樣式上都發(fā)生了質(zhì)的變化,有電子鬧鐘、數(shù)字鬧鐘等等。研究數(shù)字時鐘及其應(yīng)用,有著非?,F(xiàn)實(shí)的意義。</p><p>  2. 總體設(shè)計(jì)流程說明</p><p>  2.1數(shù)字時鐘的工作原理</p><p>  振蕩器產(chǎn)生穩(wěn)定的高頻脈沖信號,作為數(shù)字鐘的時間基準(zhǔn),然后經(jīng)過分頻器輸出標(biāo)準(zhǔn)秒脈沖。秒計(jì)數(shù)器

15、滿60后向分計(jì)數(shù)器進(jìn)位,分計(jì)數(shù)器滿60后向小時計(jì)數(shù)器進(jìn)位,小時計(jì)數(shù)器按照“24翻1”規(guī)律計(jì)數(shù)。計(jì)滿后各計(jì)數(shù)器清零,重新計(jì)數(shù)。日期部分由于日有28天、29天、30天、31天4種情況,故日由年和月共同判斷其天數(shù),日計(jì)滿后向月進(jìn)位,月滿后向年進(jìn)位。計(jì)數(shù)器的輸出分別經(jīng)譯碼器送數(shù)碼管顯示。計(jì)時出現(xiàn)誤差時,可以用校時電路校時、校分、校秒和校年、校月和校日。在控制信號中除了一般的校時信號外,還有時鐘使能信號、時鐘清零信號??刂菩盘栍?×4矩

16、形鍵盤輸入。時基電路可以由石英晶體振蕩電路構(gòu)成,如果晶振頻率為1MHz,經(jīng)過6次十分頻就可以得到秒脈沖信號。譯碼顯示電路由七段譯碼器完成,顯示由數(shù)碼管構(gòu)成。</p><p>  3 單元模塊設(shè)計(jì)流程</p><p><b>  3.1分頻模塊</b></p><p><b>  圖6分頻模塊</b></p>

17、<p>  圖6分頻模塊設(shè)計(jì)的原理主要是計(jì)數(shù)分頻,用了兩種分頻,一種是50MHZ變成200HZ的分頻,用于掃描按鍵輸入的時鐘脈沖,另外一種是將200HZ分頻為1HZ用于時間信號的脈沖。如200HZ的脈沖經(jīng)過200次計(jì)數(shù)后溢出的時鐘就是1HZ。程序仿真波形如圖7所示。</p><p><b>  圖7 仿真波形</b></p><p>  因?yàn)?0MHZ的仿真

18、太大,仿真的時候等待的時間很長,而且毛刺很多,不</p><p>  容易觀察實(shí)驗(yàn)的結(jié)果,所以軟件仿真的時候?qū)⒎诸l改成了1000分頻方便觀察現(xiàn)象,波形中NEWCLK變成1的時候,CLK計(jì)數(shù)剛好滿1000次,說明運(yùn)行成功。</p><p><b>  3.2計(jì)數(shù)模塊</b></p><p>  計(jì)數(shù)模塊用到計(jì)數(shù)器包括年、月、日、時、分、秒,圖8和

19、圖9分別為秒和日的計(jì)數(shù)模塊。</p><p><b>  圖8 秒的計(jì)數(shù)模塊</b></p><p>  計(jì)數(shù)器是這次設(shè)計(jì)的基本組成部分,但幾個計(jì)數(shù)器的原理都基本一樣,LD是預(yù)置數(shù)使能端,低電平有效,當(dāng)LD為0時,DATA的值送給NUM。正常運(yùn)作時CLK來一個上升沿,NUM輸出加1。</p><p><b>  圖9日的計(jì)數(shù)模塊<

20、;/b></p><p>  LD是置數(shù)端、NIAN[6..0]和YUE[3..0]是當(dāng)前的年月,DATA[4..0]是預(yù)置數(shù),MAX_DAYS[4..0]是最大天數(shù)的輸出端,連接到控制器的輸入端,用于調(diào)節(jié)時間。仿真波形如圖10所示。</p><p><b>  圖10 仿真波形</b></p><p><b>  3.3控制

21、模塊</b></p><p><b>  圖11控制模塊</b></p><p>  控制模塊是本設(shè)計(jì)的核心模塊,主要實(shí)現(xiàn)時間的設(shè)置,KEY1是調(diào)節(jié)時間的總控制,KEY2、KEY3主要負(fù)責(zé)指定數(shù)值的增與減。當(dāng)KEY1輸入低電平時,時鐘暫停,開始調(diào)節(jié)時鐘的秒,再輸入多一次時開始調(diào)節(jié)時間的分鐘數(shù)值,RES是退出調(diào)節(jié)的按鍵,無論進(jìn)行到哪一步,只要RES輸入低電平

22、,調(diào)節(jié)控制將跳出。SEC_EN、MIN_EN、HOUR_EN、DAY_EN、MON_EN、YEAR_EN是使能端,相應(yīng)位為高電平時調(diào)節(jié)相應(yīng)的目標(biāo)。SEC[5..0]、MIN[5..0]、HOUR[4..0]、DAY[4..0]、MON[3..0]、YEAR[6..0]分別是秒、分、時、日、月、年的預(yù)置數(shù),當(dāng)調(diào)節(jié)按鍵KEY1按下時,這些置數(shù)將會送給對應(yīng)的計(jì)數(shù)器進(jìn)行顯示。當(dāng)SEC_EN為低電平時選擇調(diào)節(jié)秒的數(shù)值??刂颇K仿真如圖12所示。&

23、lt;/p><p>  圖12 控制模塊仿真</p><p>  時間設(shè)置按鍵KEY1第一次按下時對秒SEC進(jìn)行設(shè)置,SEC_EN有效,KEY2按鍵輸入一個低跳變時,SEC加1,并且SEC的數(shù)值0、1、2、3等將會送到計(jì)數(shù)器的預(yù)置數(shù)端,這是計(jì)數(shù)器的LD有效即可將預(yù)置數(shù)直接送到數(shù)碼管去顯示。當(dāng)KEY1再次按下時對分MIN進(jìn)行設(shè)置,MIN_EN有效,即連接MIN計(jì)數(shù)器的LD有效,預(yù)置數(shù)直接送給MI

24、N計(jì)數(shù)器,無論計(jì)數(shù)器里面的值現(xiàn)在是多少,結(jié)果都會變成預(yù)置數(shù)的值,KEY2按鍵輸入一個低跳變時,MIN加1。RES是退出設(shè)置,按下之后,計(jì)數(shù)器進(jìn)入正常計(jì)時。</p><p>  另外還需要用到消抖模塊,主要是用狀態(tài)機(jī)去除毛刺,其原理和延時去毛刺的原理基本上一樣,因?yàn)槊坛掷m(xù)的時間比較短,一般只會存在5至10毫秒,所以如果想消去毛刺的話,只需要檢測一個信號(低電平)可以持續(xù)5個毫秒的就可以認(rèn)為是有按鍵按下去了。一共用

25、了3個輸入按鍵,分別是:時間設(shè)置選項(xiàng)、時間加1、時間減1,CLK的輸入時鐘是200HZ。消抖模塊的原理圖和仿真波形如圖13和圖14所示。</p><p><b>  圖13消抖模塊</b></p><p><b>  圖14仿真波形</b></p><p>  系統(tǒng)調(diào)試說明及分析</p><p>

26、  本系統(tǒng)只有FPGA編程硬件設(shè)計(jì)電路。在系統(tǒng)調(diào)試中采用自底向上的調(diào)試方法,也就是先進(jìn)行各個單元模塊的軟件編譯,在各個單元模塊調(diào)試好后再把單元模塊原理圖化,然后綜合起來進(jìn)行系統(tǒng)的整體編譯和仿真。功能仿真無誤后,通過下載數(shù)據(jù)線將設(shè)計(jì)文件加載到目標(biāo)器件—FPGA,通過控制按鍵觀察LED顯示是否達(dá)到數(shù)字鐘的設(shè)計(jì)要求。經(jīng)調(diào)試,可以完成數(shù)字鐘功能如圖17和18所示。</p><p><b>  總 結(jié)</

27、b></p><p>  在這次的課程設(shè)計(jì)過程中,我更進(jìn)一步地熟悉了有關(guān)數(shù)字電路的知識和具體應(yīng)用。學(xué)會了利用QuarterII9.0軟件進(jìn)行原理圖的繪制,硬件描述語言VHDL的編寫,實(shí)際下載到實(shí)驗(yàn)箱上后會出現(xiàn)一系列的問題,因此仿真圖和電路連接圖還是有一定區(qū)別的。</p><p>  這次設(shè)計(jì)對于我以后的工作和學(xué)習(xí)都是一種巨大的幫助,我的專業(yè)知識水平也取得一定的進(jìn)步,非常感謝老師在實(shí)驗(yàn)

28、課上的幫助。同時這次設(shè)計(jì)是采用硬件描述語言和FPGA芯片相結(jié)合進(jìn)行的數(shù)字鐘的研究,從中可以看出EDA技術(shù)的發(fā)展在一定程度上實(shí)現(xiàn)了硬件設(shè)計(jì)的軟件化。設(shè)計(jì)的過程變的相對簡單,容易修改等優(yōu)點(diǎn),相信隨著電子技術(shù)的發(fā)展,數(shù)字鐘的功能會更加多樣化,滿足人們的各種需要。</p><p><b>  附錄</b></p><p><b>  秒計(jì)數(shù)模塊</b>&

29、lt;/p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity miao is</p><p>  port(enl,res,clk,ma

30、dd,mdec:in std_logic;</p><p>  a,b:out std_logic_vector(3 downto 0);</p><p>  ca:out std_logic);</p><p><b>  end miao;</b></p><p>  architecture SEC of miao

31、 is</p><p><b>  begin</b></p><p>  process(enl,clk,res)</p><p>  variable m0,m1:std_logic_vector(3 downto 0);</p><p><b>  begin</b></p>&

32、lt;p>  if res='1' then m0:="0000";</p><p>  m1:="0000";</p><p><b>  ca<='0';</b></p><p>  elsif clk'event and clk='1

33、9; then</p><p><b>  ca<='0';</b></p><p>  if madd='1' or enl='1' then</p><p>  if m0="1000" and m1="0101" then ca<='

34、;1'; --實(shí)際是第59個--脈沖</p><p><b>  end if;</b></p><p>  if m0<"1001" then m0:=m0+1;</p><p>  else m0:="0000";

35、 </p><p><b>  m1:=m1+1;</b></p><p>  if m1>"0101" then m0:="0000";</p><p>  m1:="0000";</p><p><b>  ca<=&#

36、39;0';</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  elsif mdec='1' then </p><p>  if m0="0000" and m

37、1="0000" then m0:="1001";</p><p>  m1:="0101";</p><p>  elsif m0>"0000" then m0:=m0-1;</p><p>  else m0:="1001";</p><

38、p><b>  m1:=m1-1;</b></p><p><b>  end if;</b></p><p><b>  end if; </b></p><p>  end if; </p><p><b>  a<=m0;</

39、b></p><p><b>  b<=m1;</b></p><p>  end process;</p><p><b>  end SEC;</b></p><p><b>  --計(jì)數(shù)進(jìn)程</b></p><p>  if(sig2=

40、'1')then</p><p>  if(counter="11")then</p><p>  sig1<='0';</p><p>  counter<="00";</p><p><b>  else</b></p>

41、<p>  sig1<='1';</p><p>  counter<=counter+'1';</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  en

42、d if;</b></p><p>  end process;</p><p>  process(clky) --列線逐位輸出低電平</p><p>  variable jt :std_logic;</p><p><b>  begin</b></p>

43、;<p>  if(clky'event and clky='1')then </p><p>  if(sig1='1')then</p><p>  jt:=sig_com(3);</p><p>  for i in 3 downto 1 loop</p><p>  sig_com

44、(i)<=sig_com(i-1);</p><p><b>  end loop;</b></p><p>  sig_com(0)<=jt;</p><p><b>  else</b></p><p>  sig_com<="1110";</p>

45、;<p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  process(clky)</p><p><b>  begin</b></p>&

46、lt;p>  if(clky'event and clky='1')then</p><p>  if(sig1='1')then</p><p>  com<=sig_com;</p><p><b>  else</b></p><p>  com<=&quo

47、t;0000";</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  process(clky) --鍵碼信號賦值<

48、;/p><p><b>  begin</b></p><p>  if(clky'event and clky='1')then </p><p>  if(sig1='1')then </p><p>  if(tmp='0')then</p><

49、;p>  scan_code<=row & sig_com;</p><p><b>  else</b></p><p>  scan_code<="11111111";</p><p><b>  end if;</b></p><p><b&

50、gt;  else </b></p><p>  scan_code<="11111111";</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p>

51、;<p>  end behav;</p><p><b>  按鍵消抖模塊</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_arith.all;</p>

52、;<p>  use ieee.std_logic_unsigned.all;</p><p>  entity qudou is </p><p>  port(clk1:in std_logic;</p><p>  row:in std_logic_vector(3 downto 0);</p><p>  key_pre

53、:out std_logic);</p><p>  end qudou;</p><p>  architecture behav of qudou is </p><p>  signal sig1,counter:std_logic_vector(3 downto 0);</p><p>  signal tmp1,sig2:std_l

54、ogic;</p><p><b>  begin</b></p><p>  sig1<=row;</p><p>  tmp1<=sig1(0)and sig1(1)and sig1(2)and sig1(3);</p><p>  key_pre<=counter(0)and counter(1)

55、and counter(2)and counter(3);</p><p>  process(clk1)</p><p><b>  begin </b></p><p>  if(clk1'event and clk1='1')then</p><p>  if(tmp1='0'

56、;)then</p><p>  if(sig2='0')then</p><p>  sig2<='1';</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  if

57、(sig2='1')then</p><p>  if(counter="1111")then</p><p>  sig2<='0';</p><p>  counter<="0000";</p><p><b>  else</b>&

58、lt;/p><p>  counter<=counter+'1';</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p&g

59、t;  end process;</p><p>  end behav;</p><p><b>  掃描顯示</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_lo

60、gic_unsigned.all;</p><p>  use ieee.std_logic_arith.all;</p><p>  entity seltime is </p><p>  port(disclk,conv:in std_logic;</p><p>  m0,m1,f0,f1,s0,s1,r0,r1,y0,y1,n0,n

61、1,n2,n3:in std_logic_vector(3 downto 0);</p><p>  dataout:out std_logic_vector(3 downto 0);</p><p>  wsel:out std_logic_vector(3 downto 0));</p><p>  end seltime;</p><p&g

62、t;  architecture st of seltime is</p><p>  signal count:std_logic_vector(3 downto 0);</p><p><b>  begin</b></p><p>  wsel<=count;</p><p>  process(disclk

63、,conv) </p><p><b>  begin</b></p><p>  if disclk'event and disclk='1' then </p><p>  if count>="1010" then </p><p>  count<=&quo

64、t;0000";</p><p><b>  else </b></p><p>  count<=count+1;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>

65、  if conv='1' then </p><p>  case count is </p><p>  when"1010"=>dataout<=s1;</p><p>  when"1001"=>dataout<=s0;</p><p>  when&qu

66、ot;0110"=>dataout<=f1;</p><p>  when"0101"=>dataout<=f0;</p><p>  when"0100"=>dataout<=m1;</p><p>  when"0011"=>dataout<=m

67、0;</p><p>  when others =>dataout<="0000";</p><p><b>  end case;</b></p><p><b>  else </b></p><p>  case count is</p><

68、;p>  when"1010"=>dataout<=n3;</p><p>  when"1001"=>dataout<=n2;</p><p>  when"1000"=>dataout<=n1;</p><p>  when"0111"=&g

69、t;dataout<=n0;</p><p>  when"0110"=>dataout<=y1;</p><p>  when"0101"=>dataout<=y0;</p><p>  when"0100"=>dataout<=r1;</p>&l

70、t;p>  when"0011"=>dataout<=r0;</p><p>  when others =>dataout<="0000";</p><p><b>  end case;</b></p><p><b>  end if;</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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論