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

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  一 緒論</b></p><p>  1 在信息產(chǎn)業(yè)中EDA產(chǎn)生的影響</p><p>  隨著大規(guī)模集成電路技術(shù)和計(jì)算機(jī)技術(shù)的不斷發(fā)展,在涉及通信、國(guó)防、航天、醫(yī)學(xué)、工業(yè)自動(dòng)化、計(jì)算機(jī)應(yīng)用、儀器儀表等領(lǐng)域的電子系統(tǒng)設(shè)計(jì)工作中,EDA技術(shù)的含量正以驚人的速度上升;電子類的高新技術(shù)項(xiàng)目的開發(fā)也逾益依賴于EDA技術(shù)的應(yīng)用。即使是普通的電子產(chǎn)品

2、的開發(fā),EDA技術(shù)常常使一些原來的技術(shù)瓶頸得以輕松突破,從而使產(chǎn)品的開發(fā)周期大為縮短、性能價(jià)格比大幅提高。不言而喻,EDA技術(shù)將迅速成為電子設(shè)計(jì)領(lǐng)域中的極其重要的組成部分。</p><p>  2 中國(guó)國(guó)內(nèi)EDA發(fā)展情況</p><p>  從目前的EDA技術(shù)來看,其發(fā)展趨勢(shì)是政府重視、使用普及、應(yīng)用文泛、工具多樣、軟件功能強(qiáng)大。    中國(guó)EDA市場(chǎng)已漸趨成熟,不過

3、大部分設(shè)計(jì)工程師面向的是PC主板和小型ASIC領(lǐng)域,僅有小部分(約11%)的設(shè)計(jì)人員工發(fā)復(fù)雜的片上系統(tǒng)器件。為了與臺(tái)灣和美國(guó)的設(shè)計(jì)工程師形成更有力的競(jìng)爭(zhēng),中國(guó)的設(shè)計(jì)隊(duì)伍有必要購(gòu)入一些最新的EDA技術(shù)。    在信息通信領(lǐng)域,要優(yōu)先發(fā)展高速寬帶信息網(wǎng)、深亞微米集成電路、新型元器件、計(jì)算機(jī)及軟件技術(shù)、第三代移動(dòng)通信技術(shù)、信息管理、信息安全技術(shù),積極開拓以數(shù)字技術(shù)、網(wǎng)絡(luò)技術(shù)為基礎(chǔ)的新一代信息產(chǎn)品,發(fā)展新興產(chǎn)業(yè),培育新的經(jīng)

4、濟(jì)增長(zhǎng)點(diǎn)。要大力推進(jìn)制造業(yè)信息化,積極開展計(jì)算機(jī)輔助設(shè)計(jì)(CAD)、計(jì)算機(jī)輔助工程(CAE)、計(jì)算機(jī)輔助工藝(CAPP)、計(jì)算機(jī)機(jī)輔助制造(CAM)、產(chǎn)品數(shù)據(jù)管理(PDM)、制造資源計(jì)劃(MRPII)及企業(yè)資源管理(ERP)等。有條件的企業(yè)可開展“網(wǎng)絡(luò)制造”,便于合作設(shè)計(jì)、合作制造,參與國(guó)內(nèi)和國(guó)際競(jìng)爭(zhēng)。開展“數(shù)控化”工程和“數(shù)字化”工程。自動(dòng)化儀表的技術(shù)發(fā)展趨勢(shì)的測(cè)試技術(shù)、控制技術(shù)與計(jì)算機(jī)技術(shù)、通信技術(shù)進(jìn)一步融合,形成測(cè)量、控制、通信與

5、計(jì)算機(jī)(M</p><p><b>  3 課程設(shè)計(jì)目的</b></p><p> ?。?)加深對(duì)VHDL語言設(shè)計(jì)的理解。</p><p> ?。?)通過對(duì)自動(dòng)值更器的設(shè)計(jì)加深對(duì)EDA課程的理解</p><p> ?。?)熟悉MAX+PLUS II仿真軟件的工作方法及應(yīng)用技術(shù)</p><p>&l

6、t;b>  4 課題設(shè)計(jì)內(nèi)容</b></p><p>  本次課程設(shè)計(jì)的主要目的旨在通過獨(dú)立完成一個(gè) “自動(dòng)值更器”的設(shè)計(jì),達(dá)到對(duì)EDA技術(shù)的熟練掌握,提升對(duì)《EDA技術(shù)及應(yīng)用》課程所學(xué)內(nèi)容的掌握和應(yīng)用。</p><p>  1、計(jì)數(shù)24小時(shí)的時(shí)鐘 </p><p>  2、六位數(shù)碼管顯示“時(shí)-分-秒” </p><p>&

7、lt;b>  3、五個(gè)功能鍵</b></p><p>  Timer 從其它狀態(tài)放回時(shí)鐘狀態(tài)</p><p>  Alarm 切換到定時(shí)時(shí)間的設(shè)定</p><p>  Set 按一下,跳到下一個(gè)設(shè)置區(qū)</p><p>  Down 按一下,所設(shè)置區(qū)的數(shù)字減1</p><p>  Up 按

8、一下,所設(shè)置區(qū)的數(shù)字加1</p><p><b>  4、帶有定時(shí)功能;</b></p><p>  5、鍵盤的設(shè)定值要求在LED上顯示。</p><p><b>  一 設(shè)計(jì)的總體方案</b></p><p><b>  流程圖:</b></p><p&g

9、t;  本自動(dòng)值更器由三個(gè)模塊組成:</p><p><b> ?。?)時(shí)間顯示:</b></p><p>  24小時(shí)制顯示時(shí)間:小時(shí)用8與7數(shù)碼管,分鐘用5與4位數(shù)碼管,秒由2與1位數(shù)碼管表示,小時(shí)與分鐘之間、分鐘與秒之間用3和6位數(shù)碼管顯示“—”,總計(jì)八位七段數(shù)碼顯示管。此模式下顯示當(dāng)前時(shí)間。</p><p><b> ?。?)

10、校時(shí)模式:</b></p><p>  將time鍵置于‘0’,運(yùn)用功能鍵set鍵對(duì)八位數(shù)碼管進(jìn)行選擇,并由功能鍵up鍵進(jìn)行+1與down鍵進(jìn)行-1操作,通過此4個(gè)功能鍵進(jìn)行校時(shí)設(shè)置。</p><p>  Set->數(shù)碼管7-> Set->數(shù)碼管6-> Set->數(shù)碼管5-> Set->數(shù)碼管4-> Set->數(shù)碼管3-&g

11、t; Set->數(shù)碼管2-> Set->數(shù)碼管1</p><p>  Up->+1;down->-1;</p><p> ?。?)定時(shí)設(shè)定模式:</p><p>  將time鍵置于‘1’,設(shè)定模式與校時(shí)時(shí)設(shè)定一樣,運(yùn)用功能鍵set鍵對(duì)八位數(shù)碼管進(jìn)行選擇,并由功能鍵up鍵進(jìn)行+1與down鍵進(jìn)行-1操作,通過此4個(gè)功能鍵進(jìn)行校時(shí)設(shè)置。&

12、lt;/p><p>  Set->數(shù)碼管7-> Set->數(shù)碼管6-> Set->數(shù)碼管5-> Set->數(shù)碼管4-> Set->數(shù)碼管3-> Set->數(shù)碼管2-> Set->數(shù)碼管1</p><p>  Up->+1;down->-1;</p><p><b>  二

13、 設(shè)計(jì)的詳細(xì)原理</b></p><p>  此多自動(dòng)值更器是由多個(gè)模塊組成,各個(gè)模塊實(shí)現(xiàn)各自不同的作用,綜合起來,便是自動(dòng)值更器。</p><p><b>  1、主要模塊如下:</b></p><p> ?。?)輸入一個(gè)250KHZ的方波信號(hào)</p><p><b>  (2)計(jì)時(shí)模塊:<

14、/b></p><p>  將time鍵置于‘0’,用軟件設(shè)計(jì),當(dāng)脈沖累計(jì)2500000次時(shí)secondl自動(dòng)+1,以此類推,可得出數(shù)字時(shí)鐘,并用8位7段對(duì)各時(shí)間進(jìn)行顯示。</p><p>  輸入:250KHz脈沖,控制鍵time等</p><p><b>  輸出:秒、分、小時(shí)</b></p><p><

15、b>  (3)校時(shí)模塊:</b></p><p>  將time鍵置于‘0’, 運(yùn)用功能鍵set鍵對(duì)八位數(shù)碼管進(jìn)行選擇,并由功能鍵up鍵進(jìn)行+1與down鍵進(jìn)行-1操作,通過此4個(gè)功能鍵進(jìn)行校時(shí)設(shè)置。</p><p>  輸入:time狀態(tài)轉(zhuǎn)換鍵,set數(shù)碼管選定鍵,up+1鍵,down-1鍵</p><p>  輸出:設(shè)定后的 秒,分,小時(shí) &l

16、t;/p><p>  (4)設(shè)定定時(shí)模塊: </p><p>  與校時(shí)操作類似,只是先將time鍵置于‘1’, 再運(yùn)用功能鍵set鍵對(duì)八位數(shù)碼管進(jìn)行選擇,并由功能鍵up鍵進(jìn)行+1與down鍵進(jìn)行-1操作,通過此4個(gè)功能鍵進(jìn)行校時(shí)設(shè)置</p><p>  輸入:time狀態(tài)轉(zhuǎn)換鍵,set數(shù)碼管選定鍵,up+1鍵,down-1鍵</p><p> 

17、 輸出:所定的時(shí)間 秒,分,小時(shí)</p><p><b>  (5)整點(diǎn)蜂鳴報(bào)時(shí)</b></p><p>  運(yùn)用軟件進(jìn)行設(shè)置,當(dāng)minuteH與minuteL均為零時(shí),蜂鳴器響,也就是沒次整點(diǎn)時(shí),蜂鳴器自動(dòng)響一分鐘,如果想設(shè)置響的時(shí)間,可以手動(dòng)改即可。并且可以手動(dòng)按下功能鍵naozhong,這樣就可以手動(dòng)關(guān)閉蜂鳴器。</p><p>  輸入

18、:naozhong關(guān)閉蜂鳴器鍵</p><p>  輸出:蜂鳴器發(fā)出蜂鳴聲</p><p><b>  2、功能概述</b></p><p>  輸入一個(gè)250KHZ的方波信號(hào),運(yùn)用VHDL語言對(duì)其進(jìn)行編譯,用計(jì)數(shù)器對(duì)方波信號(hào)進(jìn)行技術(shù),當(dāng) cnt=2500000時(shí),secondl自動(dòng)+1,不斷進(jìn)行累加,可以達(dá)到實(shí)現(xiàn)數(shù)字鐘自動(dòng)計(jì)時(shí)功能。并且此自動(dòng)

19、值更器設(shè)有5個(gè)功能鍵,(1)time鍵控制顯示狀態(tài),可以選擇時(shí)鐘狀態(tài)與定時(shí)狀態(tài)的轉(zhuǎn)換(2)naozhong鍵可以手動(dòng)關(guān)閉蜂鳴器(3) set鍵可以選擇需要改變的數(shù)碼管,以便進(jìn)行調(diào)時(shí)與設(shè)定定時(shí)時(shí)間(4)up鍵對(duì)對(duì)應(yīng)的數(shù)據(jù)進(jìn)行+1操作(5)down鍵對(duì)對(duì)應(yīng)的數(shù)據(jù)進(jìn)行-1操作。通過次5個(gè)功能鍵,便可實(shí)現(xiàn)自動(dòng)值更器,擁有計(jì)時(shí)/校時(shí)功能,設(shè)定定時(shí)功能,自動(dòng)值更功能。</p><p>  四 設(shè)計(jì)的步驟和過程</p&g

20、t;<p><b>  1 計(jì)時(shí)模塊:</b></p><p>  if clk_1k'event and clk_1k = '1' then</p><p>  cnt:=cnt+1;</p><p><b>  ct:=ct+1;</b></p><p> 

21、 if ct=1000 then -- 1 秒計(jì)時(shí)。 </p><p><b>  ct:=0;</b></p><p>  secondL:=secondL+1;</p><p>  if secondL=10 then -- 10 秒計(jì)時(shí)。</p><p>  secondL:=0;</p><p

22、>  secondH:=secondH+1;</p><p><b>  end if;</b></p><p>  if secondH=6 then -- 1 分鐘計(jì)時(shí)。</p><p>  secondH:=0;</p><p>  minuteL:=minuteL+1;</p><p&g

23、t;  end if; </p><p>  if minuteL=10 then -- 10 分鐘計(jì)時(shí)。</p><p>  minuteL:=0; </p><p>  minuteH:=minuteH+1;</p><p><b>  end if;</b></p><p>  if

24、 minuteH=6 then -- 1 小計(jì)時(shí)時(shí)。</p><p>  minuteH:=0;</p><p>  hourL:=hourL+1;</p><p><b>  end if;</b></p><p>  if hourL=10 then -- 10 小時(shí)計(jì)時(shí)。</p><p>&

25、lt;b>  hourL:=0;</b></p><p>  hourH:=hourH+1;</p><p><b>  end if; </b></p><p>  if hourH=2 and hourL =4 then -- 24 小時(shí)計(jì)時(shí) </p><p><b>  hourH:=0

26、;</b></p><p><b>  hourL:=0;</b></p><p><b>  end if; </b></p><p>  次模塊的主要作用是完成24小時(shí)的即時(shí)顯示。</p><p><b>  2校時(shí)模塊</b></p><p

27、>  if clk'event and clk = '1' then</p><p><b>  d<=set;</b></p><p><b>  k<=up;</b></p><p><b>  p<=down</b></p><

28、p>  if time='0' then</p><p>  if ( d='0' and set='1')then</p><p>  stat<=stat+1;</p><p><b>  end if;</b></p><p>  case stat is

29、</p><p>  when 1 => </p><p>  if(k='0' and up='1')then</p><p>  hourH<=hourH+1;</p><p>  elsif( p='0' and down='1')then</p>

30、<p>  hourH<= hourH-1;</p><p><b>  end if;</b></p><p>  when 2 => if( k='0' and up='1')then</p><p>  hourL<= hourL+1;</p><

31、;p>  elsif( p='0' and down='1')then</p><p>  hourL<= hourL-1;</p><p><b>  end if;</b></p><p>  when 3 => if(k='0' and up='1&#

32、39;)then</p><p>  minuteH<= minuteH +1;</p><p>  elsif( p='0' and down='1')then</p><p>  minuteH<= minuteH -1;</p><p><b>  end if;</b>

33、</p><p>  when 4 => if( k='0' and up='1')then</p><p>  minuteL<= minuteL+1;</p><p>  elsif( p='0' and down='1')then</p><p>

34、  minuteL<= minuteL-1;</p><p><b>  end if;</b></p><p><b>  when 5=> </b></p><p>  if(k='0' and up='1')then</p><p>  second

35、H<= secondH +1;</p><p>  elsif(p='0' and down='1')then</p><p>  secondH<= secondH-1;</p><p><b>  end if;</b></p><p>  when 6 =>

36、 if( k='0' and up='1')then</p><p>  secondL<= secondL +1;</p><p>  elsif( p='0' and down='1')then</p><p>  secondL<= secondL-1;</p>

37、<p><b>  end if;</b></p><p>  when others=>null;</p><p><b>  end case;</b></p><p><b>  end if;</b></p><p>  此模塊的主要功能是進(jìn)行時(shí)鐘初始時(shí)

38、間的設(shè)置。</p><p><b>  3、設(shè)定定時(shí)模塊:</b></p><p>  if clk'event and clk = '1' then</p><p><b>  d<=set;</b></p><p><b>  k<=up;</

39、b></p><p><b>  p<=down;</b></p><p>  if time='1' then</p><p>  if ( d='0' and set='1')then</p><p>  stat<=stat+1;</p>

40、<p><b>  end if;</b></p><p>  case stat is</p><p>  when 1 => </p><p>  if(k='0' and up='1')then</p><p>  alarm_hourH<= alarm_h

41、ourH+1;</p><p>  elsif( p='0' and down='1')then</p><p>  alarm_hourH<= alarm_hourH-1;</p><p><b>  end if;</b></p><p>  when 2 =>

42、 if( k='0' and up='1')then</p><p>  alarm_hourL<= alarm_hourL+1;</p><p>  elsif( p='0' and down='1')then</p><p>  alarm_hourL<= alarm_hourL-1;&

43、lt;/p><p><b>  end if;</b></p><p>  when 3 => if(k='0' and up='1')then</p><p>  alarm_minuteH<= alarm_minuteH +1;</p><p>  elsif(

44、p='0' and down='1')then</p><p>  alarm_minuteH<= alarm_minuteH -1;</p><p><b>  end if;</b></p><p>  when 4 => if( k='0' and up='

45、1')then</p><p>  alarm_minuteL<= alarm_minuteL+1;</p><p>  elsif( p='0' and down='1')then</p><p>  alarm_minuteL<= alarm_minuteL-1;</p><p><

46、;b>  end if;</b></p><p><b>  when 5=> </b></p><p>  if(k='0' and up='1')then</p><p>  alarm_secondH<= alarm_secondH +1;</p><p&g

47、t;  elsif(p='0' and down='1')then</p><p>  alarm_secondH<=alarm_secondH-1;</p><p><b>  end if;</b></p><p>  when 6 => if( k='0' and

48、 up='1')then</p><p>  alarm_secondL<= alarm_secondL +1;</p><p>  elsif( p='0' and down='1')then</p><p>  alarm_secondL<= alarm_secondL-1;</p>&l

49、t;p><b>  end if;</b></p><p>  when others=>null;</p><p><b>  end case;</b></p><p><b>  end if;</b></p><p>  此模塊完成鬧鐘的設(shè)定。</p&

50、gt;<p><b>  4、顯示模塊設(shè)計(jì)</b></p><p>  if (time='0') then</p><p>  ahourH<=hourH;</p><p>  ahourL<=hourL;</p><p>  aminuteH<=minuteH;<

51、/p><p>  aminuteL<=minuteL;</p><p>  asecondH<=secondH;</p><p>  asecondL<=secondL;</p><p>  elsif(time='1')then</p><p>  ahourH<=alarm_ho

52、urH;</p><p>  ahourL<= alarm_hourL;</p><p>  aminuteH<= alarm_minuteH;</p><p>  aminuteL<= alarm_minuteL;</p><p>  asecondH<= alarm_secondH;</p><

53、p>  asecondL<= alarm_secondL;</p><p><b>  end if;</b></p><p>  case cnt is -- To display the time.</p><p>  when 0 => L<="000"; -- Enable the leftm

54、ost display.</p><p>  case ahourH is</p><p>  when 0 => dled<=X"FC";--0</p><p>  when 1 => dled<=X"60";--1</p><p>  when 2 => dled<

55、;=X"DA";--2</p><p>  when others => null;</p><p><b>  end case;</b></p><p>  when 1 => L<="001"; -- Enable the second display.</p>&l

56、t;p>  case ahourL is</p><p>  when 0 => dled<=X"FC";--0</p><p>  when 1 => dled<=X"60";--1</p><p>  when 2 => dled<=X"DA";--2</

57、p><p>  when 3 => dled<=X"F2";--3</p><p>  when 4 => dled<=X"66";--4</p><p>  when 5 => dled<=X"B6";--5</p><p>  when 6 =&g

58、t; dled<=X"BE";--6</p><p>  when 7 => dled<=X"E0";--7</p><p>  when 8 => dled<=X"FE";--8</p><p>  when 9 => dled<=X"F6";

59、--9</p><p>  when others => null;</p><p><b>  end case;</b></p><p>  when 2 => L<="010"; -- Enable the third display.</p><p>  dled<=X

60、"01"; -- Blanked.</p><p>  when 3 => L<="011"; -- Enable the fourth display.</p><p>  case aminuteH is</p><p>  when 0 => dled<=X"FC";--0

61、</p><p>  when 1 => dled<=X"60";--1</p><p>  when 2 => dled<=X"DA";--2</p><p>  when 3 => dled<=X"F2";--3</p><p>  when

62、4 => dled<=X"66";--4</p><p>  when 5 => dled<=X"B6";--5</p><p>  when others => null;</p><p><b>  end case;</b></p><p>  

63、when 4 => L<="100"; -- Enable the fifth display.</p><p>  case aminuteL is</p><p>  when 0 => dled<=X"FC";--0</p><p>  when 1 => dled<=X"6

64、0";--1</p><p>  when 2 => dled<=X"DA";--2</p><p>  when 3 => dled<=X"F2";--3</p><p>  when 4 => dled<=X"66";--4</p><p

65、>  when 5 => dled<=X"B6";--5</p><p>  when 6 => dled<=X"BE";--6</p><p>  when 7 => dled<=X"E0";--7</p><p>  when 8 => dled<=

66、X"FE";--8</p><p>  when 9 => dled<=X"F6";--9</p><p>  when others => null;</p><p><b>  end case;</b></p><p>  when 5 => L<

67、;="101"; -- Enable the sixth display.</p><p>  dled<=X"01"; -- Blanked.</p><p>  when 6 => L<="110"; -- Enable the seventh display.</p><p> 

68、 case asecondH is</p><p>  when 0 => dled<=X"FC";--0</p><p>  when 1 => dled<=X"60";--1</p><p>  when 2 => dled<=X"DA";--2</p>

69、<p>  when 3 => dled<=X"F2";--3</p><p>  when 4 => dled<=X"66";--4</p><p>  when 5 => dled<=X"B6";--5</p><p>  when others =>

70、; null;</p><p><b>  end case;</b></p><p>  when 7 => L<="111"; -- Enable the rightmost display </p><p>  case asecondL is</p><p>  when 0 =&

71、gt; dled<=X"FC";--0</p><p>  when 1 => dled<=X"60";--1</p><p>  when 2 => dled<=X"DA";--2</p><p>  when 3 => dled<=X"F2"

72、;--3</p><p>  when 4 => dled<=X"66";--4</p><p>  when 5 => dled<=X"B6";--5</p><p>  when 6 => dled<=X"BE";--6</p><p>  w

73、hen 7 => dled<=X"E0";--7</p><p>  when 8 => dled<=X"FE";--8</p><p>  when 9 => dled<=X"F6";--9</p><p>  when others => null;</p

74、><p><b>  end case;</b></p><p><b>  end case;</b></p><p>  此模塊實(shí)現(xiàn)數(shù)字鐘的顯示及定時(shí)時(shí)間設(shè)定值的顯示。</p><p><b>  五、蜂鳴器模塊設(shè)計(jì)</b></p><p>  if (

75、(hourH = alarm_hourH) and (hourL= alarm_hourL) and (minuteH = alarm_minuteH) and (minuteL = alarm_minuteL)) or ((minuteH=0)and(minuteL=0) )then</p><p>  sound<='1';</p><p><b>  

76、end if;</b></p><p>  if (naozhong='1')then</p><p>  sound<='0';</p><p><b>  end if;</b></p><p>  此模塊實(shí)現(xiàn)鬧鐘蜂鳴以及整點(diǎn)蜂鳴報(bào)時(shí)。</p><

77、p>  四、設(shè)計(jì)的仿真和運(yùn)行結(jié)果</p><p> ?。?)將time鍵置于‘0’,輸入clk信號(hào),可以得到時(shí)鐘輸出波形為:</p><p>  此時(shí)時(shí)鐘自動(dòng)計(jì)時(shí),并且將計(jì)時(shí)數(shù)據(jù)傳送至顯示管顯示。如上圖asecond=second;</p><p> ?。?)將time鍵置于‘0’,輸入clk信號(hào),并將set改為20分頻信號(hào),up與down信號(hào)交叉為1,得到時(shí)

78、鐘輸出波形為:</p><p>  如圖所示此時(shí)時(shí)間不是正常變化,因?yàn)橛惺謩?dòng)設(shè)置進(jìn)行up(+1)操作和down(-1)操作,并且將時(shí)間由數(shù)碼管顯示。</p><p> ?。?)將time鍵置于‘1’,則顯示鬧鐘初始調(diào)節(jié)狀態(tài):</p><p>  此時(shí)secondl,secondH,minuteL,minuteH,hourL,hourH不受影響,均自動(dòng)計(jì)時(shí),但是并不由

79、數(shù)碼管進(jìn)行顯示,此時(shí)顯示的是鬧鐘初定時(shí)間,這時(shí)均為0。由于set變化,stat 順序發(fā)生變化。</p><p>  (4)將time置于‘1’,并可以改變set鍵進(jìn)行數(shù)碼管選擇,并用up(+1)操作和down(-1)操作,進(jìn)行鬧鐘的初步設(shè)定。</p><p>  此時(shí)可以得到時(shí)鐘的初步設(shè)定。</p><p> ?。?)外部硬件的鏈接方法如圖</p>&

80、lt;p>  (6)時(shí)鐘顯示如下圖</p><p><b>  時(shí)鐘圖如上</b></p><p><b>  鬧鐘初定時(shí)間如上圖</b></p><p>  五 課程設(shè)計(jì)的心得體會(huì)</p><p>  EDA的課程設(shè)計(jì)持續(xù)了兩周,但我卻覺得仿佛還是當(dāng)日,真是揮指之間,時(shí)光已匆匆流逝。在這整整

81、兩個(gè)星期的日子里,我感受到了既是成功做出一個(gè)模塊的歡喜,也是修改那無限errors時(shí)的憂愁,可以說是無數(shù)次的苦盡甘來,換來了最后的成功。</p><p>  本身我就對(duì)動(dòng)手的實(shí)驗(yàn)相當(dāng)有興趣,這次能夠擁有兩周的課程設(shè)計(jì)時(shí)間,我甚是欣慰。從第一天開始知道我的多功能時(shí)鐘課題開始,我就第一時(shí)間跑去圖書館借資料,回去反復(fù)研究,從看懂程序開始入手。雖然開始有些棘手,但我覺得特別的興奮,我不把困難當(dāng)成攔路虎,反而成為我前進(jìn)的動(dòng)

82、力,遇到困難不會(huì)就翻書,找不到就問同學(xué),再不行就上網(wǎng)搜,實(shí)在不行再問老師,總之想盡一切辦法找到解決方案??墒鞘屡c愿違,我的設(shè)計(jì)總是出那么一點(diǎn)點(diǎn)的小問題,有時(shí)候編譯只出現(xiàn)1個(gè)error ,但一改就成了20 個(gè)errors了,真是讓人哭笑不得,望天興嘆呀!</p><p>  經(jīng)過兩三天的基礎(chǔ)訓(xùn)練,我終于能夠完整的看懂程序。首先我將老師給我們基本的時(shí)鐘程序進(jìn)行編譯,封鎖引腳,然后在硬件上得到正確的數(shù)碼管顯示。通過這個(gè)

83、最基本的操作,我將大體流程映入腦海,可以舉一反三,再困難的程序也不怕。</p><p>  整點(diǎn)報(bào)時(shí)自然是最簡(jiǎn)單的,我首先就加到程序內(nèi)部,其次我在網(wǎng)上找到了鬧鐘程序,因?yàn)楦蟛罹噙^大,所以我先讀懂程序,然后根據(jù)自己理解,一步步的加進(jìn)初始的時(shí)鐘程序。這個(gè)看似很簡(jiǎn)單的過程,卻整整費(fèi)了4天的時(shí)間,期間錯(cuò)誤百出。我先是運(yùn)用了多個(gè)process,進(jìn)行模塊化的處理,通過這里面出現(xiàn)的問題我才知道敏感參數(shù)列表是不能亂設(shè)置的,s

84、ingle是全局變量,而variable只能在一個(gè)process中使用等等。后來慢慢理解了其中的原委,發(fā)現(xiàn)我的程序竟如此之長(zhǎng),我決定要大量的刪減,于是我又把多個(gè)process改成了一個(gè),看似好像我是又回到了出發(fā)點(diǎn),但我覺得這絕對(duì)是一次質(zhì)的飛躍,是我能夠依照我的想法自由變換程序的映照。當(dāng)我自認(rèn)為要成功的時(shí)候,我卻遇到了一個(gè)相當(dāng)棘手的問題,此時(shí)error顯示unkown problem internal error:”widthe mism

85、atch in relation opreator”in ebuildbinaryop an line 1347 of file,雖然只有一個(gè)問題,但這個(gè)問題卻無法定位,以至于我找了很久都沒找到。那幾天我心里很壓抑,明明對(duì)的程序,為什么</p><p>  通過這次獨(dú)立的課程設(shè)計(jì),我學(xué)到了很多書本上學(xué)不到的東西,尤其是在改正錯(cuò)誤的時(shí)候,我能更加深入的了解VHDL語言的精妙之處。比如同一個(gè)process下不能使用不

86、同信號(hào)進(jìn)行event跳變,single與variable之間的差別等等等等。通過這一次一次的親身體驗(yàn),我仿佛發(fā)生了一次洗禮,經(jīng)過了一個(gè)質(zhì)的飛躍?,F(xiàn)在的我已經(jīng)基本能看懂VHDL程序,改正其中出現(xiàn)的錯(cuò)誤。</p><p>  希望以后能多多進(jìn)行這樣的實(shí)習(xí),讓自己的能力越來越高。</p><p><b>  參考書目:</b></p><p>  [

87、1] 閻石 主編,《數(shù)字電子技術(shù)基礎(chǔ)》,高等教育出版社,1998</p><p>  [2] 譚會(huì)生等主編,《EDA技術(shù)及應(yīng)用》,西安電子科技大學(xué)出版社,2001</p><p>  [3] 廖裕評(píng)等主編,《CPLD數(shù)字電路設(shè)計(jì)——使用MAX+plusⅡ入門篇》,清華大學(xué)出版社,2001</p><p>  [4] 馮濤等主編,《可編程邏輯器件開發(fā)技術(shù):MAX+pl

88、usⅡ入門與提高》,人民郵電出版社,2002</p><p>  [5] 楊崇志,《特殊新型電子元件手冊(cè)》,遼寧科學(xué)技術(shù)出版社,1999</p><p>  [6] 彭介華,《電子技術(shù)課程設(shè)計(jì)指導(dǎo)》高等教育出版社.2000年出版.</p><p>  [7] Mark Zwolinski, Digital System Design with VHDL, 電子工業(yè)出

89、版社,2002</p><p>  [8] Alan B. Marcovitz Introduction to logic Design, 電子工業(yè)出版社,2002</p><p><b>  附錄1:</b></p><p><b>  總程序如下:</b></p><p>  library I

90、EEE;</p><p>  use IEEE.std_logic_1164.all;</p><p>  entity timer is</p><p>  port(clk : in std_logic; -- System clock input port(250KHz).</p><p>  naozhong:in std_logi

91、c;</p><p>  L : out std_logic_vector(2 downto 0); -- 8 seven-segment displays selection ports.</p><p>  dled: out std_logic_vector(7 downto 0); -- Digits display ports.</p><p>  t

92、ime:in std_logic;</p><p>  sound: out std_logic;</p><p>  clk_1:in std_logic;</p><p>  clk_2:in std_logic;</p><p>  clk_3:in std_logic);</p><p>  end timer

93、;</p><p>  architecture display of timer is</p><p>  signal cnt: integer range 0 to 7; -- 8 seven-segment displays seletion counter.</p><p>  signal ct:integer range 0 to 250000 ; -

94、- 1 second generator counter.</p><p>  signal hourH,ahourH,alarm_hourH: integer range 0 to 2; </p><p>  signal minuteH,secondH,aminuteH,asecondH,alarm_minuteH,alarm_secondH: integer range 0 to 6

95、;</p><p>  signal hourL,minuteL,secondL,ahourL,aminuteL,asecondL,alarm_hourL,alarm_minuteL,alarm_secondL: integer range 0 to 10;</p><p>  signal set : integer range 0 to 7;</p><p> 

96、 signal d,k,p: std_logic;</p><p><b>  begin</b></p><p>  process (clk)</p><p><b>  begin</b></p><p>  if clk'event and clk = '1' the

97、n</p><p>  sound<='1';</p><p>  cnt<=cnt+1;</p><p><b>  ct<=ct+1;</b></p><p>  if ct=250000 then -- 1 second </p><p><b>

98、  ct<=0;</b></p><p>  secondL<=secondL+1;</p><p><b>  end if;</b></p><p>  if secondL=10 then -- 10 seconds</p><p>  secondL<=0;</p>&

99、lt;p>  secondH<=secondH+1;</p><p><b>  end if;</b></p><p>  if secondH=6 then -- 60 seconds(1 minute)</p><p>  secondH<=0;</p><p>  minuteL<=min

100、uteL+1;</p><p><b>  end if; </b></p><p>  if minuteL=10 then -- 10 minutes</p><p>  minuteL<=0;</p><p>  minuteH<=minuteH+1;</p><p><b

101、>  end if;</b></p><p>  if minuteH=6 then -- 60 minutes(1 hour)</p><p>  minuteH<=0;</p><p>  hourL<=hourL+1;</p><p><b>  end if; </b></p

102、><p>  if hourL=10 then -- 10 hours</p><p><b>  hourL<=0;</b></p><p>  hourH<=hourH+1;</p><p>  end if; </p><p>  if hourH=2 and hourL =4

103、then -- 24 hours </p><p><b>  hourH<=0;</b></p><p><b>  hourL<=0;</b></p><p><b>  end if; </b></p><p>  if (time='0')

104、then</p><p>  ahourH<=hourH;</p><p>  ahourL<=hourL;</p><p>  aminuteH<=minuteH;</p><p>  aminuteL<=minuteL;</p><p>  asecondH<=secondH;<

105、/p><p>  asecondL<=secondL;</p><p>  elsif(time='1')then</p><p>  ahourH<=alarm_hourH;</p><p>  ahourL<= alarm_hourL;</p><p>  aminuteH<=

106、alarm_minuteH;</p><p>  aminuteL<= alarm_minuteL;</p><p>  asecondH<= alarm_secondH;</p><p>  asecondL<= alarm_secondL;</p><p><b>  end if;</b><

107、/p><p>  case cnt is -- To display the time.</p><p>  when 0 => L<="000"; -- Enable the leftmost display.</p><p>  case ahourH is</p><p>  when 0 => dle

108、d<=X"FC";--0</p><p>  when 1 => dled<=X"60";--1</p><p>  when 2 => dled<=X"DA";--2</p><p>  when others => null;</p><p>

109、<b>  end case;</b></p><p>  when 1 => L<="001"; -- Enable the second display.</p><p>  case ahourL is</p><p>  when 0 => dled<=X"FC";--0&

110、lt;/p><p>  when 1 => dled<=X"60";--1</p><p>  when 2 => dled<=X"DA";--2</p><p>  when 3 => dled<=X"F2";--3</p><p>  when 4

111、 => dled<=X"66";--4</p><p>  when 5 => dled<=X"B6";--5</p><p>  when 6 => dled<=X"BE";--6</p><p>  when 7 => dled<=X"E0&qu

112、ot;;--7</p><p>  when 8 => dled<=X"FE";--8</p><p>  when 9 => dled<=X"F6";--9</p><p>  when others => null;</p><p><b>  end cas

113、e;</b></p><p>  when 2 => L<="010"; -- Enable the third display.</p><p>  dled<=X"01"; -- Blanked.</p><p>  when 3 => L<="011";

114、-- Enable the fourth display.</p><p>  case aminuteH is</p><p>  when 0 => dled<=X"FC";--0</p><p>  when 1 => dled<=X"60";--1</p><p>  w

115、hen 2 => dled<=X"DA";--2</p><p>  when 3 => dled<=X"F2";--3</p><p>  when 4 => dled<=X"66";--4</p><p>  when 5 => dled<=X"

116、B6";--5</p><p>  when others => null;</p><p><b>  end case;</b></p><p>  when 4 => L<="100"; -- Enable the fifth display.</p><p>  c

117、ase aminuteL is</p><p>  when 0 => dled<=X"FC";--0</p><p>  when 1 => dled<=X"60";--1</p><p>  when 2 => dled<=X"DA";--2</p>&

118、lt;p>  when 3 => dled<=X"F2";--3</p><p>  when 4 => dled<=X"66";--4</p><p>  when 5 => dled<=X"B6";--5</p><p>  when 6 => dled&

119、lt;=X"BE";--6</p><p>  when 7 => dled<=X"E0";--7</p><p>  when 8 => dled<=X"FE";--8</p><p>  when 9 => dled<=X"F6";--9</

120、p><p>  when others => null;</p><p><b>  end case;</b></p><p>  when 5 => L<="101"; -- Enable the sixth display.</p><p>  dled<=X"01

121、"; -- Blanked.</p><p>  when 6 => L<="110"; -- Enable the seventh display.</p><p>  case asecondH is</p><p>  when 0 => dled<=X"FC";--0</p&

122、gt;<p>  when 1 => dled<=X"60";--1</p><p>  when 2 => dled<=X"DA";--2</p><p>  when 3 => dled<=X"F2";--3</p><p>  when 4 =>

123、 dled<=X"66";--4</p><p>  when 5 => dled<=X"B6";--5</p><p>  when others => null;</p><p><b>  end case;</b></p><p>  when 7

124、=> L<="111"; -- Enable the rightmost display </p><p>  case asecondL is</p><p>  when 0 => dled<=X"FC";--0</p><p>  when 1 => dled<=X"60&q

125、uot;;--1</p><p>  when 2 => dled<=X"DA";--2</p><p>  when 3 => dled<=X"F2";--3</p><p>  when 4 => dled<=X"66";--4</p><p>

126、;  when 5 => dled<=X"B6";--5</p><p>  when 6 => dled<=X"BE";--6</p><p>  when 7 => dled<=X"E0";--7</p><p>  when 8 => dled<=X&q

127、uot;FE";--8</p><p>  when 9 => dled<=X"F6";--9</p><p>  when others => null;</p><p><b>  end case;</b></p><p><b>  end case;&l

128、t;/b></p><p><b>  d<=clk_1;</b></p><p><b>  k<=clk_2;</b></p><p><b>  p<=clk_3;</b></p><p>  if time='1' then<

129、;/p><p>  if ( d='0' and clk_1='1')then</p><p>  set<=set+1;</p><p><b>  end if;</b></p><p>  case set is</p><p>  when 1 =>

130、 </p><p>  if(k='0' and clk_2='1')then</p><p>  alarm_hourH<= alarm_hourH+1;</p><p>  elsif( p='0' and clk_3='1')then</p><p>  alarm_

131、hourH<= alarm_hourH-1;</p><p><b>  end if;</b></p><p>  when 2 => if( k='0' and clk_2='1')then</p><p>  alarm_hourL<= alarm_hourL+1;</p

132、><p>  elsif( p='0' and clk_3='1')then</p><p>  alarm_hourL<= alarm_hourL-1;</p><p><b>  end if;</b></p><p>  when 3 => if(k='

133、0' and clk_2='1')then</p><p>  alarm_minuteH<= alarm_minuteH +1;</p><p>  elsif( p='0' and clk_3='1')then</p><p>  alarm_minuteH<= alarm_minuteH -1

134、;</p><p><b>  end if;</b></p><p>  when 4 => if( k='0' and clk_2='1')then</p><p>  alarm_minuteL<= alarm_minuteL+1;</p><p>  el

135、sif( p='0' and clk_3='1')then</p><p>  alarm_minuteL<= alarm_minuteL-1;</p><p><b>  end if;</b></p><p><b>  when 5=> </b></p>&l

136、t;p>  if(k='0' and clk_2='1')then</p><p>  alarm_secondH<= alarm_secondH +1;</p><p>  elsif(p='0' and clk_3='1')then</p><p>  alarm_secondH<

137、=alarm_secondH-1;</p><p><b>  end if;</b></p><p>  when 6 => if( k='0' and clk_2='1')then</p><p>  alarm_secondL<= alarm_secondL +1;</p&

138、gt;<p>  elsif( p='0' and clk_3='1')then</p><p>  alarm_secondL<= alarm_secondL-1;</p><p><b>  end if;</b></p><p>  when others=>null;</p

139、><p><b>  end case;</b></p><p><b>  end if;</b></p><p>  if time='0' then</p><p>  if ( d='0' and clk_1='1')then</p>

140、<p>  set<=set+1;</p><p><b>  end if;</b></p><p>  case set is</p><p>  when 1 => </p><p>  if(k='0' and clk_2='1')then</p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論