diff --git a/tridoracpu/tridoracpu.srcs/tdraudio.v b/tridoracpu/tridoracpu.srcs/tdraudio.v index 9e3721f..5c19264 100644 --- a/tridoracpu/tridoracpu.srcs/tdraudio.v +++ b/tridoracpu/tridoracpu.srcs/tdraudio.v @@ -42,22 +42,17 @@ module wavegen #(DATA_WIDTH=32, CLOCK_DIV_WIDTH=22, AMP_WIDTH=16) ( reg [LFSR_WIDTH-1:0] lfsr; wire [AMP_WIDTH-1:0] noise_out; - reg direct_amp_enable; - //assign rd_data = {{DATA_WIDTH-8-CLOCK_DIV_WIDTH{1'b0}}, div_count, {7{1'b0}}, channel_enable}; - assign rd_data = {8'b0, amp_start, - {6{1'b0}}, amp_phase, channel_enable}; + assign rd_data = {8'b0, amp_start, {6{1'b0}}, noise_enable, channel_enable}; assign amp_val = amp_out; assign running = channel_enable; - wire ctl_reg_write = wr_en && (reg_sel == TDRAU_REG_CTL); - /* channel enable flag */ always @(posedge clk) begin if(reset) channel_enable <= 0; - else if (ctl_reg_write) + else if (wr_en && (reg_sel == TDRAU_REG_CTL)) channel_enable <= wr_data[0]; end @@ -102,7 +97,7 @@ module wavegen #(DATA_WIDTH=32, CLOCK_DIV_WIDTH=22, AMP_WIDTH=16) ( begin if(reset) noise_enable <= 0; - else if (ctl_reg_write) + else if (wr_en && (reg_sel == TDRAU_REG_CTL)) noise_enable <= wr_data[1]; end @@ -112,7 +107,7 @@ module wavegen #(DATA_WIDTH=32, CLOCK_DIV_WIDTH=22, AMP_WIDTH=16) ( if (reset) lfsr <= LFSR_INIT; else - if (ctl_reg_write && wr_data[1]) + if (wr_en && (reg_sel == TDRAU_REG_CTL) && wr_data[1]) lfsr <= LFSR_INIT; else if (channel_enable && noise_enable) @@ -124,15 +119,6 @@ module wavegen #(DATA_WIDTH=32, CLOCK_DIV_WIDTH=22, AMP_WIDTH=16) ( assign noise_out = lfsr[0] ? amp_start : ~amp_start; - /* direct amplitude enable flag */ - always @(posedge clk) - begin - if(reset) - direct_amp_enable <= 0; - else if (ctl_reg_write) - direct_amp_enable <= wr_data[2]; - end - /* amplitude out */ always @(posedge clk) begin @@ -146,9 +132,8 @@ module wavegen #(DATA_WIDTH=32, CLOCK_DIV_WIDTH=22, AMP_WIDTH=16) ( begin if (div_count == 0) // invert amplitude on clock tick begin - amp_out <= direct_amp_enable ? amp_start : - noise_enable ? noise_out : - amp_phase ? amp_start : ~amp_start; + amp_out <= noise_enable ? noise_out : + amp_phase ? amp_start : ~amp_start; amp_phase <= ~amp_phase; end end @@ -156,7 +141,7 @@ module wavegen #(DATA_WIDTH=32, CLOCK_DIV_WIDTH=22, AMP_WIDTH=16) ( amp_out <= 0; // reset phase bit when enabling the channel - if (ctl_reg_write && wr_data[0]) + if (wr_en && (reg_sel == TDRAU_REG_CTL) && wr_data[0]) // when channel is enabled, phase will be flipped on next tick // because div_count will become zero amp_phase <= 1; diff --git a/tridoracpu/tridoracpu.xpr b/tridoracpu/tridoracpu.xpr index 9541c3d..ba7a2ef 100644 --- a/tridoracpu/tridoracpu.xpr +++ b/tridoracpu/tridoracpu.xpr @@ -356,12 +356,13 @@ - + - - Vivado Synthesis Defaults - - + + + + + @@ -378,26 +379,16 @@ - + - - To compensate for optimistic delay estimation, add extra delay cost to long distance and high fanout connections. low setting, least pessimistic) - + - - - + - - - + - - - - - - + +