Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.94 KB | None | 0 0
  1. module onda_exemplo(
  2. bot1,
  3. bot2,
  4. bot3,
  5. bot4,
  6. chav1,
  7. chav2,
  8. endereco_audio,
  9. taxa_amostragem,
  10. incremento_audio,
  11. largura_endereco,
  12. Sin_Out,
  13. clock
  14. );
  15.  
  16. /////////////////////////////////////
  17. input clock;
  18. input bot1;
  19. input bot2;
  20. input bot3;
  21. input bot4;
  22. input chav1;
  23. input chav2;
  24. input [8:0] endereco_audio;
  25. output [16:0] taxa_amostragem;
  26. output [4:0] incremento_audio;
  27. output [8:0] largura_endereco;
  28. output reg [15:0] Sin_Out;
  29.  
  30. /////////////////////////////////////
  31. reg [50:0] cont;
  32. reg [3:0] nota;
  33. reg [4:0]incremento;
  34. reg [4:0]volctrl;
  35. reg [12:0]frequencia;
  36.  
  37. /////////////////////////////////////
  38. parameter taxa = 32000;
  39.  
  40. /////////////////////////////////////
  41. assign taxa_amostragem = taxa;
  42. assign incremento_audio = incremento;
  43. assign largura_endereco = taxa_amostragem / frequencia;
  44.  
  45. /////////////////////////////////////
  46. always @(posedge clock)
  47.  
  48. begin
  49.  
  50. if(chav2) begin
  51. nota = 0;
  52. end
  53. else if(!chav1) begin
  54. if(!bot1)
  55. nota = 1;
  56. else if(!bot2)
  57. nota = 2;
  58. else if(!bot3)
  59. nota = 3;
  60. else if(!bot4)
  61. nota = 4;
  62. else
  63. nota = 0;
  64. end
  65. else begin
  66. if(!bot1)
  67. nota = 5;
  68. else if(!bot2)
  69. nota = 6;
  70. else if(!bot3)
  71. nota = 7;
  72. else if(!bot4)
  73. nota = 8;
  74. else
  75. nota = 0;
  76. end
  77.  
  78. end
  79. /////////////////////////////////////
  80. always @(endereco_audio)
  81. begin
  82. if(nota == 0)
  83. Sin_Out <= 0 ;// 3d
  84. else if(nota == 1) begin
  85. incremento = 1;
  86. frequencia = 294 * incremento; // 3d
  87. case(endereco_audio)//signal frequency = 294, sampling rate = 32000, number of points = 108
  88. 0 : Sin_Out <= 16'b0000000000000000;
  89. 1 : Sin_Out <= 16'b0000011110000011;
  90. 2 : Sin_Out <= 16'b0000111011111111;
  91. 3 : Sin_Out <= 16'b0001011001101110;
  92. 4 : Sin_Out <= 16'b0001110111001010;
  93. 5 : Sin_Out <= 16'b0010010100001011;
  94. 6 : Sin_Out <= 16'b0010110000101011;
  95. 7 : Sin_Out <= 16'b0011001100100101;
  96. 8 : Sin_Out <= 16'b0011100111110001;
  97. 9 : Sin_Out <= 16'b0100000010001010;
  98. 10 : Sin_Out <= 16'b0100011011101010;
  99. 11 : Sin_Out <= 16'b0100110100001100;
  100. 12 : Sin_Out <= 16'b0101001011101010;
  101. 13 : Sin_Out <= 16'b0101100001111110;
  102. 14 : Sin_Out <= 16'b0101110111000101;
  103. 15 : Sin_Out <= 16'b0110001010111000;
  104. 16 : Sin_Out <= 16'b0110011101010101;
  105. 17 : Sin_Out <= 16'b0110101110010110;
  106. 18 : Sin_Out <= 16'b0110111101111000;
  107. 19 : Sin_Out <= 16'b0111001011111000;
  108. 20 : Sin_Out <= 16'b0111011000010011;
  109. 21 : Sin_Out <= 16'b0111100011000101;
  110. 22 : Sin_Out <= 16'b0111101100001101;
  111. 23 : Sin_Out <= 16'b0111110011101000;
  112. 24 : Sin_Out <= 16'b0111111001010101;
  113. 25 : Sin_Out <= 16'b0111111101010011;
  114. 26 : Sin_Out <= 16'b0111111111100000;
  115. 27 : Sin_Out <= 16'b0111111111111100;
  116. 28 : Sin_Out <= 16'b0111111110100111;
  117. 29 : Sin_Out <= 16'b0111111011100010;
  118. 30 : Sin_Out <= 16'b0111110110101101;
  119. 31 : Sin_Out <= 16'b0111110000001000;
  120. 32 : Sin_Out <= 16'b0111100111110111;
  121. 33 : Sin_Out <= 16'b0111011101111001;
  122. 34 : Sin_Out <= 16'b0111010010010011;
  123. 35 : Sin_Out <= 16'b0111000101000101;
  124. 36 : Sin_Out <= 16'b0110110110010011;
  125. 37 : Sin_Out <= 16'b0110100110000001;
  126. 38 : Sin_Out <= 16'b0110010100010010;
  127. 39 : Sin_Out <= 16'b0110000001001001;
  128. 40 : Sin_Out <= 16'b0101101100101011;
  129. 41 : Sin_Out <= 16'b0101010110111101;
  130. 42 : Sin_Out <= 16'b0101000000000100;
  131. 43 : Sin_Out <= 16'b0100101000000011;
  132. 44 : Sin_Out <= 16'b0100001111000010;
  133. 45 : Sin_Out <= 16'b0011110101000100;
  134. 46 : Sin_Out <= 16'b0011011010010001;
  135. 47 : Sin_Out <= 16'b0010111110101101;
  136. 48 : Sin_Out <= 16'b0010100010011111;
  137. 49 : Sin_Out <= 16'b0010000101101110;
  138. 50 : Sin_Out <= 16'b0001101000011111;
  139. 51 : Sin_Out <= 16'b0001001010111001;
  140. 52 : Sin_Out <= 16'b0000101101000010;
  141. 53 : Sin_Out <= 16'b0000001111000001;
  142. 54 : Sin_Out <= 16'b1111110000111111;
  143. 55 : Sin_Out <= 16'b1111010010111110;
  144. 56 : Sin_Out <= 16'b1110110101000111;
  145. 57 : Sin_Out <= 16'b1110010111100001;
  146. 58 : Sin_Out <= 16'b1101111010010010;
  147. 59 : Sin_Out <= 16'b1101011101100001;
  148. 60 : Sin_Out <= 16'b1101000001010011;
  149. 61 : Sin_Out <= 16'b1100100101101111;
  150. 62 : Sin_Out <= 16'b1100001010111100;
  151. 63 : Sin_Out <= 16'b1011110000111110;
  152. 64 : Sin_Out <= 16'b1011010111111101;
  153. 65 : Sin_Out <= 16'b1010111111111100;
  154. 66 : Sin_Out <= 16'b1010101001000011;
  155. 67 : Sin_Out <= 16'b1010010011010101;
  156. 68 : Sin_Out <= 16'b1001111110110111;
  157. 69 : Sin_Out <= 16'b1001101011101110;
  158. 70 : Sin_Out <= 16'b1001011001111111;
  159. 71 : Sin_Out <= 16'b1001001001101101;
  160. 72 : Sin_Out <= 16'b1000111010111011;
  161. 73 : Sin_Out <= 16'b1000101101101101;
  162. 74 : Sin_Out <= 16'b1000100010000111;
  163. 75 : Sin_Out <= 16'b1000011000001001;
  164. 76 : Sin_Out <= 16'b1000001111111000;
  165. 77 : Sin_Out <= 16'b1000001001010011;
  166. 78 : Sin_Out <= 16'b1000000100011110;
  167. 79 : Sin_Out <= 16'b1000000001011001;
  168. 80 : Sin_Out <= 16'b1000000000000100;
  169. 81 : Sin_Out <= 16'b1000000000100000;
  170. 82 : Sin_Out <= 16'b1000000010101101;
  171. 83 : Sin_Out <= 16'b1000000110101011;
  172. 84 : Sin_Out <= 16'b1000001100011000;
  173. 85 : Sin_Out <= 16'b1000010011110011;
  174. 86 : Sin_Out <= 16'b1000011100111011;
  175. 87 : Sin_Out <= 16'b1000100111101101;
  176. 88 : Sin_Out <= 16'b1000110100001000;
  177. 89 : Sin_Out <= 16'b1001000010001000;
  178. 90 : Sin_Out <= 16'b1001010001101010;
  179. 91 : Sin_Out <= 16'b1001100010101011;
  180. 92 : Sin_Out <= 16'b1001110101001000;
  181. 93 : Sin_Out <= 16'b1010001000111011;
  182. 94 : Sin_Out <= 16'b1010011110000010;
  183. 95 : Sin_Out <= 16'b1010110100010110;
  184. 96 : Sin_Out <= 16'b1011001011110100;
  185. 97 : Sin_Out <= 16'b1011100100010110;
  186. 98 : Sin_Out <= 16'b1011111101110110;
  187. 99 : Sin_Out <= 16'b1100011000001111;
  188. 100 : Sin_Out <= 16'b1100110011011011;
  189. 101 : Sin_Out <= 16'b1101001111010101;
  190. 102 : Sin_Out <= 16'b1101101011110101;
  191. 103 : Sin_Out <= 16'b1110001000110110;
  192. 104 : Sin_Out <= 16'b1110100110010010;
  193. 105 : Sin_Out <= 16'b1111000100000001;
  194. 106 : Sin_Out <= 16'b1111100001111101;
  195. 107 : Sin_Out <= 16'b0000000000000000;
  196. default :
  197. Sin_Out <= 0 ;
  198. endcase
  199. end
  200. end
  201. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement