欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2740|回復: 0
打印 上一主題 下一主題
收起左側

“梁祝”樂曲演奏vhdl源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:704585 發表于 2020-6-16 10:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. “梁祝”樂曲演奏電路
  2. //信號定義與說明:
  3. //clk_4Hz: 用于控制音長(節拍)的時鐘頻率;
  4. //clk_6MHz: 用于產生各種音階頻率的基準頻率;
  5. //speaker: 用于激勵揚聲器的輸出信號,本例中為方波信號;
  6. //high, med, low:分別用于顯示高音、中音和低音音符,各驅動一個數碼管來顯示。
  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 分頻產生方波信號
  24. end
  25. always @(posedge clk_4Hz)
  26. begin
  27. case({high,med,low}) //分頻比預置
  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; //計時,以實現循環演奏
  44. else counter=counter+1;
  45. case(counter) //記譜
  46. 0: {high,med,low}='b000000000011; //低音“3”
  47. 1: {high,med,low}='b000000000011; //持續4 個時鐘節拍
  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; //發3 個時鐘節拍
  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; //發3 個時鐘節拍
  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; //發3 個時鐘節拍
  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; //持續11 個時鐘節拍
  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; //持續8 個時鐘節拍
  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
復制代碼


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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表