一.新代码:
1.带计数增量输入的计数器:
module cnt_incr(
CLK , // clock
INCR , // counterincrease value
CNTVAL); //counter value
input CLK;
input [7-1:0] INCR;(增量由拨码开关决定,emmmmmm… …有点儿像循环步长)
output [7-1:0] CNTVAL;
reg [7-1:0] CNTVAL;
always @ (posedge CLK) begin
CNTVAL <= INCR + CNTVAL;
end
endmodule //module cnt_incr
2. 正弦波表数据ROM
该ROM中数据为一个整周期正弦波128点采样,每个样点采用8比特量化,数据范围(-1,1),二进制补码格式。
module sine_rom(
CLK , // clock
RA , // read address
RD ); // read data
input CLK;
input [6 :0]RA;
output [7 :0] RD;
reg [7 :0] RD;
always @ (posedge CLK)
case(RA)
7 'd 0 :RD = #1 8 'b 00000000; // 0 0x0
7 'd 1 :RD = #1 8 'b 00000110;// 6 0x6
7 'd 2 :RD = #1 8 'b 00001100; // 12 0xC
7 'd 3 :RD = #1 8 'b 00010010;// 18 0x12
7 'd 4 :RD = #1 8 'b 00011000; // 24 0x18
7 'd 5 :RD = #1 8 'b 00011110; // 30 0x1E
7 'd 6 :RD = #1 8 'b 00100100;// 36 0x24
7 'd 7 :RD = #1 8 'b 00101010; // 420x2A
7 'd 8 :RD = #1 8 'b 00110000; // 480x30
7 'd 9 :RD = #1 8 'b 00110110; // 540x36
7 'd 10 :RD = #1 8 'b 00111011; // 590x3B
7 'd 11 :RD = #1 8 'b 01000001; // 650x41
7 'd 12 :RD = #1 8 'b 01000110; // 700x46
7 'd 13 :RD = #1 8 'b 01001011; // 750x4B
7 'd 14 :RD = #1 8 'b 01010000; // 800