樂曲演奏課程設(shè)計(jì)報(bào)告---樂曲演奏電路的設(shè)計(jì)_第1頁
已閱讀1頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  《EDA技術(shù)綜合設(shè)計(jì)》</p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  報(bào)告題目: 樂曲演奏電路的設(shè)計(jì) </p><p>  作者所在系部: </p><p>  作者所在專業(yè): </p><p>

2、;  作者所在班級: </p><p>  作 者 姓 名 : </p><p>  指導(dǎo)教師姓名: </p><p>  完 成 時(shí) 間 : </p><p><b>  內(nèi) 容 摘 要</b>&l

3、t;/p><p>  在EDA開發(fā)工具Quartus II 6.0平臺(tái)上,采用VHDL語言層次化和模塊化的設(shè)計(jì)方法,通過音符編碼的設(shè)計(jì)思想,預(yù)先定制樂曲,實(shí)現(xiàn)動(dòng)態(tài)顯示樂曲演奏電路的設(shè)計(jì),并在此基礎(chǔ)上,基于同一原理,使此電路同時(shí)具備了簡易電子琴的功能,使基于CPLD/FPGA芯片的樂曲播放數(shù)字電路得到了更好的優(yōu)化,提高了設(shè)計(jì)的靈活性和可擴(kuò)展性。</p><p>  關(guān)鍵字:EDA;Quartus

4、 II;VHDL;CPLD/FPGA;樂曲演奏電路;簡易電子琴</p><p><b>  課程設(shè)計(jì)任務(wù)書</b></p><p><b>  二、設(shè)計(jì)原理</b></p><p><b>  音調(diào)的控制</b></p><p>  頻率的高低決定了音調(diào)的高低。音樂的十二平均率

5、規(guī)定:每兩個(gè)八度音(如簡譜中的中音1和高音1)之間的頻率相差一倍。在兩個(gè)八度音之間又分為十二個(gè)半音。另外,音名A(簡譜中的低音6)的頻率為440Hz,音名B到C之間、E到F之間為半音,其余為全音。由此可以計(jì)算出簡譜中從低音1到高音1之間每個(gè)音名對應(yīng)的頻率,所有不同頻率的信號(hào)都是從同一個(gè)基準(zhǔn)頻率分頻得到的。由于音階頻率多為非整數(shù),而分頻系數(shù)又不能為小數(shù),因此必須將計(jì)算得到的分頻數(shù)四舍五入取整。若基準(zhǔn)頻率過低,則由于分頻比太小,四舍五入取整

6、后的誤差較大;若基準(zhǔn)頻率過高,雖然誤差較小,但分頻數(shù)將變大。實(shí)際的設(shè)計(jì)應(yīng)綜合考慮這兩方面的因素,在盡量減小頻率誤差的前提下取合適的基準(zhǔn)頻率。因此,要想FPGA發(fā)出不同音符的音調(diào),實(shí)際上只要控制它輸出相應(yīng)音符的頻率即可。綜合考慮各因素,本文中選取12MHZ作為CLK的分頻計(jì)數(shù)器的輸入分頻信號(hào)。樂曲都是由一連串的音符組成,因此按照樂曲的樂譜依次輸出這些音符所對應(yīng)的頻率,就可以在揚(yáng)聲器上連續(xù)地發(fā)出各個(gè)音符的音調(diào)。</p><

7、;p>  表3-1 簡譜中的音名與頻率的關(guān)系</p><p>  資料來源:EPM7128實(shí)驗(yàn)板說明書</p><p><b>  音長的控制</b></p><p>  音符的持續(xù)時(shí)間須根據(jù)樂曲的速度及每個(gè)音符的節(jié)拍數(shù)來確定。因此,在想控制音符的音長,就必須知道樂曲的速度和每個(gè)音符所對應(yīng)的節(jié)拍數(shù),在這個(gè)設(shè)計(jì)中所演奏的樂曲的最短的音符為四

8、分音符,如果將全音符的持續(xù)時(shí)間設(shè)為1s的話,那么一拍所應(yīng)該持續(xù)的時(shí)間為0.25秒,則只需要再提供一個(gè)4HZ的時(shí)鐘頻率即可產(chǎn)生四分音符的時(shí)長。要想讓系統(tǒng)知道現(xiàn)在應(yīng)該演奏哪個(gè)音符,而這個(gè)音符持續(xù)的時(shí)間應(yīng)該是多少,就必須編寫樂曲文件,在樂曲文件中音符是按地址存放的,當(dāng)系統(tǒng)工作時(shí)就按4Hz的頻率依次讀取簡譜,當(dāng)系統(tǒng)讀到某個(gè)音符的簡譜時(shí)就對應(yīng)發(fā)這個(gè)音符的音調(diào),持續(xù)時(shí)間為0.25秒,而如果在曲譜文件中這個(gè)音符為三拍音長,那又該如何控制呢?其實(shí)只要將

9、該音符連續(xù)書寫三遍,這時(shí)系統(tǒng)讀樂曲文件的時(shí)候就會(huì)連續(xù)讀到三次,也就會(huì)發(fā)三個(gè)0.25秒的音長,這時(shí)我們聽上去就會(huì)持續(xù)了三拍的時(shí)間,通過這樣一個(gè)簡單的操作就可以控制音樂的音長了。</p><p><b>  三.源程序</b></p><p><b>  1、編碼器。</b></p><p>  library ieee;&l

10、t;/p><p>  use ieee.std_logic_1164.all;</p><p>  entity bianma is port(</p><p>  din:in std_logic_vector(3 downto 0);</p><p>  view:out std_logic_vector(2 downto 0);</p

11、><p>  dout:out std_logic_vector(10 downto 0));</p><p>  end bianma;</p><p>  architecture made_bianma of bianma is</p><p><b>  begin</b></p><p> 

12、 process(din)</p><p><b>  begin</b></p><p>  case din is</p><p><b>  --gao_yin</b></p><p>  --when ""=>dout<="11100000011&

13、quot;;--1795</p><p>  --when ""=>dout<="11011100100";--1764</p><p>  --when ""=>dout<="11011000001";--1729</p><p>  when "11

14、00"=>dout<="11010011010";view<="110";--1690--12</p><p>  when "1011"=>dout<="11010000101";view<="110";--1669--11</p><p> 

15、 when "1010"=>dout<="11001010110";view<="110";--1622--10</p><p>  when "1001"=>dout<="11000100010";view<="110";--1570--9</p>

16、;<p>  --zhong_yin</p><p>  --when ""=>dout<="11000000110";--1542</p><p>  --when ""=>dout<="10111001000";--1480</p><p>  

17、--when ""=>dout<="10110000010";--1410</p><p>  when "1000"=>dout<="10100110100";view<="101";--1332--8</p><p>  when "0111&qu

18、ot;=>dout<="10100001010";view<="101";--1290--7</p><p>  when "0110"=>dout<="10010101101";view<="101";--1197--6</p><p>  when &

19、quot;0101"=>dout<="10001000100";view<="101";--1092--5</p><p><b>  --di_yin</b></p><p>  --when ""=>dout<="10000001100";--1

20、036</p><p>  --when ""=>dout<="01110010000";--912</p><p>  --when ""=>dout<="01100001101";--781</p><p>  when "0100"=&g

21、t;dout<="01001101000";view<="011";--616--4</p><p>  when "0011"=>dout<="01000010000";view<="011";--528--3</p><p>  when "001

22、0"=>dout<="00101011001";view<="011";--345--2</p><p>  when "0001"=>dout<="00010001001";view<="011";--137--1</p><p>  when

23、 others => dout<="11111111111"; --2047</p><p><b>  end case;</b></p><p>  end process;</p><p>  end made_bianma;</p><p><b>  2、三選一<

24、/b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  entity change is port(</p><p>  din1,din2,din3,din4:in std_logic_vector(3 downto 0);</p&

25、gt;<p>  cs:in std_logic_vector(1 downto 0);</p><p>  dout:out std_logic_vector(3 downto 0));</p><p>  end change;</p><p>  architecture made_change of change is</p>&

26、lt;p><b>  begin</b></p><p>  process(cs)</p><p><b>  begin</b></p><p>  case cs is</p><p>  when "00" =>dout<=din1;</p>

27、<p>  when "01" =>dout<=din2;</p><p>  when "10" =>dout<=din3;</p><p>  when "11" =>dout<=din4;</p><p>  when others =>dout

28、<=din1;</p><p><b>  end case;</b></p><p>  end process;</p><p>  end made_change;</p><p><b>  3、分頻器</b></p><p>  library ieee;&l

29、t;/p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity fenpin is port(</p><p>  din: in std_logic_vector(10 downto 0);</p>

30、<p>  clk: in std_logic;</p><p>  dout: out std_logic);</p><p>  end fenpin;</p><p>  architecture made of fenpin is</p><p>  signal temp:std_logic_vector(10 dow

31、nto 0);</p><p><b>  begin</b></p><p>  process(din,clk)</p><p><b>  begin</b></p><p>  if(clk'event and clk='1')then</p><

32、p>  if(temp=2047)then</p><p>  temp<=din;</p><p><b>  else</b></p><p>  temp<=temp+1;</p><p><b>  end if;</b></p><p><

33、;b>  end if;</b></p><p>  end process;</p><p>  dout<='1' when temp=2046</p><p><b>  else '0';</b></p><p><b>  end made;&l

34、t;/b></p><p><b>  4、音樂模塊1</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>

35、  entity made_music is</p><p><b>  port(</b></p><p>  clk_2hz:in std_logic;</p><p>  dout:out std_logic_vector(3 downto 0));</p><p>  end made_music;</p&

36、gt;<p>  architecture make_music of made_music is</p><p>  signal temp:std_logic_vector(5 downto 0);</p><p><b>  begin</b></p><p>  process(clk_2hz)</p>&l

37、t;p><b>  begin</b></p><p>  if(clk_2hz'event and clk_2hz='1') then</p><p>  if(temp=48) then </p><p>  temp<="000000";</p><p>&l

38、t;b>  else </b></p><p>  temp<=temp+1;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  p

39、rocess(temp)</p><p><b>  begin</b></p><p>  case temp is</p><p>  when "000000" =>dout<="0001"; --1</p><p>  when "000001&quo

40、t; =>dout<="0001"; --1</p><p>  when "000010" =>dout<="0011"; --3</p><p>  when "000011" =>dout<="0011"; --3</p><p&

41、gt;  when "000100" =>dout<="0010"; --2</p><p>  when "000101" =>dout<="0010"; --2</p><p>  when "000110" =>dout<="0100&qu

42、ot;; --4</p><p>  when "000111" =>dout<="0100"; --4</p><p>  when "001000" =>dout<="0101"; --5</p><p>  when "001001" =

43、>dout<="0101"; --5</p><p>  when "001010" =>dout<="0111"; --7</p><p>  when "001011" =>dout<="0111"; --7</p><p> 

44、 when "001100" =>dout<="0110"; --6</p><p>  when "001101" =>dout<="0110"; --6</p><p>  when "001110" =>dout<="1000";

45、 --8</p><p>  when "001111" =>dout<="1000"; --8</p><p>  when "010000" =>dout<="1001"; --9</p><p>  when "010001" =>

46、dout<="1001"; --9</p><p>  when "010010" =>dout<="1011"; --11</p><p>  when "010011" =>dout<="1011"; --11</p><p>  w

47、hen "010100" =>dout<="1100"; --12</p><p>  when "010101" =>dout<="1100"; --12</p><p>  when "010110" =>dout<="1011";

48、 --11</p><p>  when "010111" =>dout<="1011"; --11</p><p>  when "011000" =>dout<="1010"; --10</p><p>  when "011001" =&

49、gt;dout<="1010"; --10</p><p>  when "011010" =>dout<="0101"; --5</p><p>  when "011011" =>dout<="0101"; --5</p><p> 

50、 when "011100" =>dout<="1000"; --8</p><p>  when "011101" =>dout<="1000"; --8</p><p>  when "011110" =>dout<="0110";

51、 --6</p><p>  when "011111" =>dout<="0110"; --6</p><p>  when "100000" =>dout<="0111"; --7</p><p>  when "100001" =>

52、dout<="0111"; --7</p><p>  when "100010" =>dout<="0100"; --4</p><p>  when "100011" =>dout<="0100"; --4</p><p>  whe

53、n "100100" =>dout<="0011"; --3</p><p>  when "100101" =>dout<="0011"; --3</p><p>  when "100110" =>dout<="0001"; --1

54、</p><p>  when "100111" =>dout<="0001"; --1</p><p>  when "101000" =>dout<="0010"; --2</p><p>  when "101001" =>dout

55、<="0010"; --2</p><p>  when "101010" =>dout<="0001"; --1</p><p>  when "101011" =>dout<="0001"; --1</p><p>  when ot

56、hers=>dout<="0000"; --0</p><p><b>  end case;</b></p><p>  end process;</p><p>  end make_music;</p><p><b>  音樂模塊2</b></p>

57、<p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity made_music1 is</p><p><b>  port(</b&

58、gt;</p><p>  clk_2hz:in std_logic;</p><p>  dout:out std_logic_vector(3 downto 0));</p><p>  end made_music1;</p><p>  architecture make_music of made_music1 is</p&g

59、t;<p>  signal temp:std_logic_vector(6 downto 0);</p><p><b>  begin</b></p><p>  process(clk_2hz)</p><p><b>  begin</b></p><p>  if(clk_2

60、hz'event and clk_2hz='1') then</p><p>  if(temp=72) then </p><p>  temp<="0000000";</p><p><b>  else </b></p><p>  temp<=temp+1;

61、</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  process(temp)</p><p><b>  begin</b><

62、/p><p>  case temp is</p><p>  when "0000000" =>dout<="0001"; --1</p><p>  when "0000001" =>dout<="0001"; --1</p><p>  

63、when "0000010" =>dout<="0010"; --2</p><p>  when "0000011" =>dout<="0010"; --2</p><p>  when "0000100" =>dout<="0011"

64、;; --3</p><p>  when "0000101" =>dout<="0011"; --3</p><p>  when "0000110" =>dout<="0011"; --3</p><p>  when "0000111"

65、=>dout<="0011"; --3</p><p>  when "0001000" =>dout<="0010"; --2</p><p>  when "0001001" =>dout<="0010"; --2</p><p&g

66、t;  when "0001010" =>dout<="0001"; --1</p><p>  when "0001011" =>dout<="0001"; --1</p><p>  when "0001100" =>dout<="0010&

67、quot;; --2</p><p>  when "0001101" =>dout<="0010"; --2</p><p>  when "0001110" =>dout<="0011"; --3</p><p>  when "0001111&qu

68、ot; =>dout<="0011"; --3</p><p>  when "0010000" =>dout<="0100"; --4</p><p>  when "0010001" =>dout<="0100"; --4</p><

69、;p>  when "0010010" =>dout<="0100"; --4</p><p>  when "0010011" =>dout<="0100"; --4</p><p>  when "0010100" =>dout<="0

70、011"; --3</p><p>  when "0010101" =>dout<="0011"; --3</p><p>  when "0010110" =>dout<="0010"; --2</p><p>  when "001011

71、1" =>dout<="0010"; --2</p><p>  when "0011000" =>dout<="0101"; --5</p><p>  when "0011001" =>dout<="0101"; --5</p>

72、<p>  when "0011010" =>dout<="0110"; --6</p><p>  when "0011011" =>dout<="0110"; --6</p><p>  when "0011100" =>dout<=&qu

73、ot;0111"; --7</p><p>  when "0011101" =>dout<="0111"; --7</p><p>  when "0011110" =>dout<="0111"; --7</p><p>  when "00

74、11111" =>dout<="0111"; --7</p><p>  when "0100000" =>dout<="0101"; --5</p><p>  when "0100001" =>dout<="0101"; --5</p&

75、gt;<p>  when "0100010" =>dout<="0110"; --6</p><p>  when "0100011" =>dout<="0110"; --6</p><p>  when "0100100" =>dout<

76、="0110"; --6</p><p>  when "0100101" =>dout<="0110"; --6</p><p>  when "0100110" =>dout<="0111"; --7</p><p>  when &quo

77、t;0100111" =>dout<="0111"; --7</p><p>  when "0101000" =>dout<="1000"; --8</p><p>  when "0101001" =>dout<="1000"; --8<

78、;/p><p>  when "0101010" =>dout<="1000"; --8</p><p>  when "0101011" =>dout<="1000"; --8</p><p>  when "0101100" =>dout

79、<="0111"; --7</p><p>  when "0101101" =>dout<="0111"; --7</p><p>  when "0101110" =>dout<="0110"; --6</p><p>  when

80、"0101111" =>dout<="0110"; --6</p><p>  when "0110000" =>dout<="1001"; --9</p><p>  when "0110001" =>dout<="1001"; --

81、9</p><p>  when "0110010" =>dout<="1010"; --10</p><p>  when "0110011" =>dout<="1010"; --10</p><p>  when "0110100" =&g

82、t;dout<="1011"; --11</p><p>  when "0110101" =>dout<="1011"; --11</p><p>  when "0110110" =>dout<="1011"; --11</p><p&g

83、t;  when "0110111" =>dout<="1011"; --11</p><p>  when "0111000" =>dout<="1010"; --10</p><p>  when "0111001" =>dout<="101

84、0"; --10</p><p>  when "0111010" =>dout<="1001"; --9</p><p>  when "0111011" =>dout<="1001"; --9</p><p>  when "0111

85、100" =>dout<="1010"; --10</p><p>  when "0111101" =>dout<="1010"; --10</p><p>  when "0111110" =>dout<="1011"; --11</p

86、><p>  when "0111111" =>dout<="1011"; --11</p><p>  when "1000000" =>dout<="1100"; --12</p><p>  when "1000001" =>dout&

87、lt;="1100"; --12</p><p>  when "1000010" =>dout<="1100"; --12</p><p>  when "1000011" =>dout<="1100"; --12</p><p>  whe

88、n "1000100" =>dout<="1011"; --11</p><p>  when "1000101" =>dout<="1011"; --11</p><p>  when "1000110" =>dout<="1010"

89、; --10</p><p>  when "1000111" =>dout<="1010"; --10</p><p>  when others=>dout<="0000"; --0</p><p><b>  end case;</b></p&

90、gt;<p>  end process;</p><p>  end make_music;</p><p><b>  音樂模塊3</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>

91、;  use ieee.std_logic_unsigned.all;</p><p>  entity made_music2 is</p><p><b>  port(</b></p><p>  clk_2hz:in std_logic;</p><p>  dout:out std_logic_vector(3

92、 downto 0));</p><p>  end made_music2;</p><p>  architecture make_music of made_music2 is</p><p>  signal temp:std_logic_vector(6 downto 0);</p><p><b>  begin<

93、/b></p><p>  process(clk_2hz)</p><p><b>  begin</b></p><p>  if(clk_2hz'event and clk_2hz='1') then</p><p>  if(temp=45) then </p><

94、;p>  temp<="0000000";</p><p><b>  else </b></p><p>  temp<=temp+1;</p><p><b>  end if;</b></p><p><b>  end if;</b>

95、;</p><p>  end process;</p><p>  process(temp)</p><p><b>  begin</b></p><p>  case temp is</p><p>  when "0000000" =>dout<=&quo

96、t;0001"; --1</p><p>  when "0000001" =>dout<="0001"; --1</p><p>  when "0000010" =>dout<="0010"; --2</p><p>  when "000

97、0011" =>dout<="0010"; --2</p><p>  when "0000100" =>dout<="0011"; --3</p><p>  when "0000101" =>dout<="0011"; --3</p&g

98、t;<p>  when "0000110" =>dout<="0100"; --4</p><p>  when "0000111" =>dout<="0100"; --4</p><p>  when "0001000" =>dout<=

99、"0101"; --5</p><p>  when "0001001" =>dout<="0101"; --5</p><p>  when "0001010" =>dout<="0110"; --6</p><p>  when "

100、;0001011" =>dout<="0110"; --6</p><p>  when "0001100" =>dout<="0111"; --7</p><p>  when "0001101" =>dout<="0111"; --7<

101、/p><p>  when "0001110" =>dout<="1000"; --8</p><p>  when "0001111" =>dout<="1000"; --8</p><p>  when "0010000" =>dout&

102、lt;="1001"; --9</p><p>  when "0010001" =>dout<="1001"; --9</p><p>  when "0010010" =>dout<="1010"; --10</p><p>  when

103、"0010011" =>dout<="1010"; --10</p><p>  when "0010100" =>dout<="1011"; --11</p><p>  when "0010101" =>dout<="1011";

104、--11</p><p>  when "0010110" =>dout<="1100"; --12</p><p>  when "0010111" =>dout<="1100"; --12</p><p>  when "0011000"

105、=>dout<="1011"; --11</p><p>  when "0011001" =>dout<="1011"; --11</p><p>  when "0011010" =>dout<="1010"; --10</p><

106、p>  when "0011011" =>dout<="1010"; --10</p><p>  when "0011100" =>dout<="1001"; --9</p><p>  when "0011101" =>dout<="1

107、001"; --9</p><p>  when "0011110" =>dout<="1000"; --8</p><p>  when "0011111" =>dout<="1000"; --8</p><p>  when "010000

108、0" =>dout<="0111"; --7</p><p>  when "0100001" =>dout<="0111"; --7</p><p>  when "0100010" =>dout<="0110"; --6</p>

109、<p>  when "0100011" =>dout<="0110"; --6</p><p>  when "0100100" =>dout<="0101"; --5</p><p>  when "0100101" =>dout<=&qu

110、ot;0101"; --5</p><p>  when "0100110" =>dout<="0100"; --4</p><p>  when "0100111" =>dout<="0100"; --4</p><p>  when "01

111、01000" =>dout<="0011"; --3</p><p>  when "0101001" =>dout<="0011"; --3</p><p>  when "0101010" =>dout<="0010"; --2</p&

112、gt;<p>  when "0101011" =>dout<="0010"; --2</p><p>  when "0101100" =>dout<="0001"; --1</p><p>  when "0101101" =>dout<

113、="0001"; --1</p><p>  when others=>dout<="0000"; --0</p><p><b>  end case;</b></p><p>  end process;</p><p>  end make_music;</

114、p><p><b>  總原理圖</b></p><p><b>  五、實(shí)驗(yàn)?zāi)康?lt;/b></p><p>  1. 熟練掌握VHDL 語言和QUARTUS II 軟件的使用;</p><p>  2. 理解狀態(tài)機(jī)的工作原理和設(shè)計(jì)方法;</p><p>  3. 掌握利用EDA

115、工具進(jìn)行自頂向下的電子系統(tǒng)設(shè)計(jì)方法</p><p><b>  六、實(shí)驗(yàn)步驟</b></p><p>  1.將實(shí)驗(yàn)系統(tǒng)上RS232接口與計(jì)算機(jī)串行口相連。</p><p>  2.用VHDL將源程序輸入QUARTUS II軟件中。</p><p>  3.編譯程序并進(jìn)行引腳分配,最后將程序下載到器件中去。</p&

116、gt;<p><b>  七、收獲和體會(huì):</b></p><p>  通過本次EDA課設(shè),我學(xué)會(huì)了VHDL語言的一些基本用法,應(yīng)用了原來不會(huì)或者不熟練的句型,如if句,也學(xué)會(huì)了一些基本功能的實(shí)現(xiàn)方法,如分頻,狀態(tài)控制等等,從另外一個(gè)角度重新審視了這個(gè)學(xué)期完全從硬件角度出發(fā)的電路設(shè)計(jì),明白了軟硬件之間的交互。通過這次實(shí)驗(yàn),對系統(tǒng)框圖的設(shè)計(jì)有了一定的了解。懂得了系統(tǒng)的前期設(shè)計(jì)對于

117、后續(xù)的編程和調(diào)試的重要性。</p><p>  本次實(shí)驗(yàn)采用了自下而上的設(shè)計(jì)方法,根據(jù)系統(tǒng)對硬件的要求,分化模塊,利用模塊實(shí)現(xiàn)功能,最后進(jìn)行仿真和調(diào)試。</p><p>  雖然這次實(shí)驗(yàn)遇到的問題不少,但是在胡輝老師以及同學(xué)的幫助下,我都順利地解決了,并為將來的實(shí)踐積累了寶貴的經(jīng)驗(yàn)和教訓(xùn)。</p><p>  具體的經(jīng)驗(yàn)和教訓(xùn)有:</p><p&

118、gt;  1模塊化設(shè)計(jì)有利于提高硬件設(shè)計(jì)的效率。</p><p>  2邏輯正確和仿真真確并不代表著實(shí)際實(shí)驗(yàn)的正確,通常情況下,要適當(dāng)?shù)卣{(diào)整邏輯以適應(yīng)硬件。要特別注意仿真時(shí)出現(xiàn)的毛刺和偏差,到底是由于仿真設(shè)置不合理還是仿真結(jié)果確實(shí)有問題。</p><p>  3從簡到難,逐步深入,先打出程序的框架,實(shí)現(xiàn)基本功能,然后再逐步細(xì)化。</p><p>  4學(xué)會(huì)經(jīng)常和老師

119、、同學(xué)交流,以便及時(shí)發(fā)現(xiàn)自己在實(shí)驗(yàn)中的紕漏和不足,促進(jìn)進(jìn)步。</p><p>  這次實(shí)驗(yàn)本人態(tài)度認(rèn)真,積極向其他同學(xué)求教并在此過程中得到很多收獲,能夠進(jìn)一步了解和使用一門與硬件直接打交道的基本語言對我們將來的學(xué)習(xí)和工作都會(huì)十分有益。</p><p>  實(shí)驗(yàn)的順利完成,與老師的熱心指導(dǎo)是分不開的,最后十分感謝胡輝老師的認(rèn)真負(fù)責(zé)的工作,讓我受益匪淺!</p><p>

120、;<b>  八、參考文獻(xiàn)</b></p><p>  《EDA技術(shù)與實(shí)驗(yàn)》 機(jī)械工業(yè)出版社 李國洪、胡輝、沈明山</p><p>  《EDA技術(shù)實(shí)驗(yàn)與課程設(shè)計(jì)》 清華大學(xué)出版社 曹新燕、周鳳臣、聶春燕</p><p>  《EDA技術(shù)綜合應(yīng)用實(shí)例與分析》 西安電子科技大學(xué)出

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論