找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2663|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

“梁!睒非葑鄓hdl源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:704585 發(fā)表于 2020-6-16 10:12 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. “梁祝”樂曲演奏電路
  2. //信號(hào)定義與說明:
  3. //clk_4Hz: 用于控制音長(zhǎng)(節(jié)拍)的時(shí)鐘頻率;
  4. //clk_6MHz: 用于產(chǎn)生各種音階頻率的基準(zhǔn)頻率;
  5. //speaker: 用于激勵(lì)揚(yáng)聲器的輸出信號(hào),本例中為方波信號(hào);
  6. //high, med, low:分別用于顯示高音、中音和低音音符,各驅(qū)動(dòng)一個(gè)數(shù)碼管來顯示。
  7. module song(clk_6MHz,clk_4Hz,speaker,high,med,low);
  8. input clk_6MHz, clk_4Hz;
  9. output speaker;
  10. output[3:0] high,med,low;
  11. reg[3:0] high,med,low;
  12. reg[13:0] divider,origin;
  13. reg[7:0] counter;
  14. reg speaker;
  15. wire carry;
  16. assign carry=(divider==16383);
  17. always @(posedge clk_6MHz)
  18. begin if(carry) divider=origin;
  19. else divider=divider+1;
  20. end
  21. always @(posedge carry)
  22. begin
  23. speaker=~speaker; //2 分頻產(chǎn)生方波信號(hào)
  24. end
  25. always @(posedge clk_4Hz)
  26. begin
  27. case({high,med,low}) //分頻比預(yù)置
  28. 'b000000000011: origin=7281;
  29. 'b000000000101: origin=8730;
  30. 'b000000000110: origin=9565;
  31. 'b000000000111: origin=10310;
  32. 'b000000010000: origin=10647;
  33. 'b000000100000: origin=11272;
  34. 'b000000110000: origin=11831;
  35. 'b000001010000: origin=12556;
  36. 'b000001100000: origin=12974;
  37. 'b000100000000: origin=13516;
  38. 'b000000000000: origin=16383;
  39. endcase
  40. end
  41. always @(posedge clk_4Hz)
  42. begin
  43. if(counter==63) counter=0; //計(jì)時(shí),以實(shí)現(xiàn)循環(huán)演奏
  44. else counter=counter+1;
  45. case(counter) //記譜
  46. 0: {high,med,low}='b000000000011; //低音“3”
  47. 1: {high,med,low}='b000000000011; //持續(xù)4 個(gè)時(shí)鐘節(jié)拍
  48. 2: {high,med,low}='b000000000011;
  49. 3: {high,med,low}='b000000000011;
  50. 4: {high,med,low}='b000000000101; //低音“5”
  51. 5: {high,med,low}='b000000000101; //發(fā)3 個(gè)時(shí)鐘節(jié)拍
  52. 6: {high,med,low}='b000000000101;
  53. 7: {high,med,low}='b000000000110; //低音“6”
  54. 8: {high,med,low}='b000000010000; //中音“1”
  55. 9: {high,med,low}='b000000010000; //發(fā)3 個(gè)時(shí)鐘節(jié)拍
  56. 10: {high,med,low}='b000000010000;
  57. 11: {high,med,low}='b000000100000; //中音“2”
  58. 12: {high,med,low}='b000000000110; //低音“6”
  59. 13: {high,med,low}='b000000010000;
  60. 14: {high,med,low}='b000000000101;
  61. 15: {high,med,low}='b000000000101;
  62. 16: {high,med,low}='b000001010000; //中音“5”
  63. 17: {high,med,low}='b000001010000; //發(fā)3 個(gè)時(shí)鐘節(jié)拍
  64. 18: {high,med,low}='b000001010000;
  65. 19: {high,med,low}='b000100000000; //高音“1”
  66. 20: {high,med,low}='b000001100000;
  67. 21: {high,med,low}='b000001010000;
  68. 22: {high,med,low}='b000000110000;
  69. 23: {high,med,low}='b000001010000;
  70. 24: {high,med,low}='b000000100000; //中音“2”
  71. 25: {high,med,low}='b000000100000; //持續(xù)11 個(gè)時(shí)鐘節(jié)拍
  72. 26: {high,med,low}='b000000100000;
  73. 27: {high,med,low}='b000000100000;
  74. 28: {high,med,low}='b000000100000;
  75. 29: {high,med,low}='b000000100000;
  76. 30: {high,med,low}='b000000100000;
  77. 31: {high,med,low}='b000000100000;
  78. 32: {high,med,low}='b000000100000;
  79. 33: {high,med,low}='b000000100000;
  80. 34: {high,med,low}='b000000100000;
  81. 35: {high,med,low}='b000000110000; //中音“3”
  82. 36: {high,med,low}='b000000000111; //低音“7”
  83. 37: {high,med,low}='b000000000111;
  84. 38: {high,med,low}='b000000000110; //低音“6”
  85. 39: {high,med,low}='b000000000110;
  86. 40: {high,med,low}='b000000000101; //低音“5”
  87. 41: {high,med,low}='b000000000101;
  88. 42: {high,med,low}='b000000000101;
  89. 43: {high,med,low}='b000000000110; //低音“6”
  90. 44: {high,med,low}='b000000010000; //中音“1”
  91. 45: {high,med,low}='b000000010000;
  92. 46: {high,med,low}='b000000100000; //中音“2”
  93. 47: {high,med,low}='b000000100000;
  94. 48: {high,med,low}='b000000000011; //低音“3”
  95. 49: {high,med,low}='b000000000011;
  96. 50: {high,med,low}='b000000010000; //中音“1”
  97. 51: {high,med,low}='b000000010000;
  98. 52: {high,med,low}='b000000000110;
  99. 53: {high,med,low}='b000000000101; //低音“5”
  100. 54: {high,med,low}='b000000000110;
  101. 55: {high,med,low}='b000000010000; //中音“1”
  102. 56: {high,med,low}='b000000000101; //低音“5”
  103. 57: {high,med,low}='b000000000101; //持續(xù)8 個(gè)時(shí)鐘節(jié)拍
  104. 58: {high,med,low}='b000000000101;
  105. 59: {high,med,low}='b000000000101;
  106. 60: {high,med,low}='b000000000101;
  107. 61: {high,med,low}='b000000000101;
  108. 62: {high,med,low}='b000000000101;
  109. 63: {high,med,low}='b000000000101;
  110. endcase
  111. end
  112. endmodule
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表