tridoracpu: cleaned up top a bit, removed some warnings
This commit is contained in:
parent
0016d4ea25
commit
d2f3b09e72
5 changed files with 47 additions and 58 deletions
|
|
@ -8,8 +8,8 @@ set_property -dict {PACKAGE_PIN E3 IOSTANDARD LVCMOS33} [get_ports clk]
|
||||||
create_clock -period 10.000 -name sys_clk_pin -waveform {0.000 5.000} -add [get_ports clk]
|
create_clock -period 10.000 -name sys_clk_pin -waveform {0.000 5.000} -add [get_ports clk]
|
||||||
|
|
||||||
## Switches
|
## Switches
|
||||||
set_property -dict {PACKAGE_PIN A8 IOSTANDARD LVCMOS33} [get_ports sw0]
|
#set_property -dict {PACKAGE_PIN A8 IOSTANDARD LVCMOS33} [get_ports sw0]
|
||||||
set_property -dict {PACKAGE_PIN C11 IOSTANDARD LVCMOS33} [get_ports sw1]
|
#set_property -dict {PACKAGE_PIN C11 IOSTANDARD LVCMOS33} [get_ports sw1]
|
||||||
#set_property -dict { PACKAGE_PIN C10 IOSTANDARD LVCMOS33 } [get_ports { sw[2] }]; #IO_L13N_T2_MRCC_16 Sch=sw[2]
|
#set_property -dict { PACKAGE_PIN C10 IOSTANDARD LVCMOS33 } [get_ports { sw[2] }]; #IO_L13N_T2_MRCC_16 Sch=sw[2]
|
||||||
#set_property -dict { PACKAGE_PIN A10 IOSTANDARD LVCMOS33 } [get_ports { sw[3] }]; #IO_L14P_T2_SRCC_16 Sch=sw[3]
|
#set_property -dict { PACKAGE_PIN A10 IOSTANDARD LVCMOS33 } [get_ports { sw[3] }]; #IO_L14P_T2_SRCC_16 Sch=sw[3]
|
||||||
|
|
||||||
|
|
@ -34,7 +34,7 @@ set_property -dict {PACKAGE_PIN T9 IOSTANDARD LVCMOS33} [get_ports led2]
|
||||||
set_property -dict {PACKAGE_PIN T10 IOSTANDARD LVCMOS33} [get_ports led3]
|
set_property -dict {PACKAGE_PIN T10 IOSTANDARD LVCMOS33} [get_ports led3]
|
||||||
|
|
||||||
## Buttons
|
## Buttons
|
||||||
set_property -dict {PACKAGE_PIN D9 IOSTANDARD LVCMOS33} [get_ports btn0]
|
#set_property -dict {PACKAGE_PIN D9 IOSTANDARD LVCMOS33} [get_ports btn0]
|
||||||
#set_property -dict { PACKAGE_PIN C9 IOSTANDARD LVCMOS33 } [get_ports { btn1 }]; #IO_L11P_T1_SRCC_16 Sch=btn[1]
|
#set_property -dict { PACKAGE_PIN C9 IOSTANDARD LVCMOS33 } [get_ports { btn1 }]; #IO_L11P_T1_SRCC_16 Sch=btn[1]
|
||||||
#set_property -dict { PACKAGE_PIN B9 IOSTANDARD LVCMOS33 } [get_ports { btn[2] }]; #IO_L11N_T1_SRCC_16 Sch=btn[2]
|
#set_property -dict { PACKAGE_PIN B9 IOSTANDARD LVCMOS33 } [get_ports { btn[2] }]; #IO_L11N_T1_SRCC_16 Sch=btn[2]
|
||||||
#set_property -dict { PACKAGE_PIN B8 IOSTANDARD LVCMOS33 } [get_ports { btn[3] }]; #IO_L12P_T1_MRCC_16 Sch=btn[3]
|
#set_property -dict { PACKAGE_PIN B8 IOSTANDARD LVCMOS33 } [get_ports { btn[3] }]; #IO_L12P_T1_MRCC_16 Sch=btn[3]
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,9 @@ module stackcpu #(parameter ADDR_WIDTH = 32, WIDTH = 32,
|
||||||
output wire write_enable,
|
output wire write_enable,
|
||||||
input wire mem_wait,
|
input wire mem_wait,
|
||||||
|
|
||||||
output wire led1,
|
output wire debug1,
|
||||||
output wire led2,
|
output wire debug2,
|
||||||
output wire led3
|
output wire debug3
|
||||||
);
|
);
|
||||||
|
|
||||||
localparam EVAL_STACK_INDEX_WIDTH = 6;
|
localparam EVAL_STACK_INDEX_WIDTH = 6;
|
||||||
|
|
@ -90,7 +90,6 @@ module stackcpu #(parameter ADDR_WIDTH = 32, WIDTH = 32,
|
||||||
wire mem_write;
|
wire mem_write;
|
||||||
|
|
||||||
wire x_is_zero;
|
wire x_is_zero;
|
||||||
// wire [WIDTH-1:0] y_plus_operand = Y + operand;
|
|
||||||
|
|
||||||
wire x_equals_y = X == Y;
|
wire x_equals_y = X == Y;
|
||||||
wire y_lessthan_x = $signed(Y) < $signed(X);
|
wire y_lessthan_x = $signed(Y) < $signed(X);
|
||||||
|
|
@ -105,16 +104,10 @@ module stackcpu #(parameter ADDR_WIDTH = 32, WIDTH = 32,
|
||||||
assign write_enable = mem_write_enable;
|
assign write_enable = mem_write_enable;
|
||||||
|
|
||||||
// debug output ------------------------------------------------------------------------------------
|
// debug output ------------------------------------------------------------------------------------
|
||||||
assign led1 = reset;
|
assign debug1 = reset;
|
||||||
assign led2 = ins_loadc;
|
assign debug2 = ins_loadc;
|
||||||
assign led3 = ins_branch;
|
assign debug3 = ins_branch;
|
||||||
// assign debug_out1 = { mem_read_enable, mem_write_enable, x_is_zero,
|
|
||||||
// ins_branch, ins_aluop, y_lessthan_x, x_equals_y, {7{1'b0}}, seq_state};
|
|
||||||
// assign debug_out2 = data_in;
|
|
||||||
// assign debug_out3 = nX;
|
|
||||||
// assign debug_out4 = nPC;
|
|
||||||
// assign debug_out5 = ins;
|
|
||||||
// assign debug_out6 = IV;
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
// instruction decoding
|
// instruction decoding
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ module wavegen #(DATA_WIDTH=32, CLOCK_DIV_WIDTH=22,
|
||||||
input wire reset,
|
input wire reset,
|
||||||
input wire [1:0] reg_sel,
|
input wire [1:0] reg_sel,
|
||||||
output wire [DATA_WIDTH-1:0] rd_data,
|
output wire [DATA_WIDTH-1:0] rd_data,
|
||||||
input wire [DATA_WIDTH-1:0] wr_data,
|
input wire [AMP_WIDTH-1:0] wr_data,
|
||||||
input wire rd_en,
|
input wire rd_en,
|
||||||
input wire wr_en,
|
input wire wr_en,
|
||||||
|
|
||||||
|
|
@ -20,6 +20,9 @@ module wavegen #(DATA_WIDTH=32, CLOCK_DIV_WIDTH=22,
|
||||||
localparam TDRAU_REG_CLK = 1; /* clock divider register */
|
localparam TDRAU_REG_CLK = 1; /* clock divider register */
|
||||||
localparam TDRAU_REG_AMP = 2; /* amplitude (volume) register */
|
localparam TDRAU_REG_AMP = 2; /* amplitude (volume) register */
|
||||||
|
|
||||||
|
/* avoid warning about unconnected port */
|
||||||
|
(* keep="soft" *) wire _unused = rd_en;
|
||||||
|
|
||||||
reg channel_enable;
|
reg channel_enable;
|
||||||
reg [CLOCK_DIV_WIDTH-1:0] clock_div;
|
reg [CLOCK_DIV_WIDTH-1:0] clock_div;
|
||||||
reg [CLOCK_DIV_WIDTH-1:0] div_count;
|
reg [CLOCK_DIV_WIDTH-1:0] div_count;
|
||||||
|
|
@ -29,12 +32,12 @@ module wavegen #(DATA_WIDTH=32, CLOCK_DIV_WIDTH=22,
|
||||||
|
|
||||||
wire fifo_wr_en;
|
wire fifo_wr_en;
|
||||||
wire fifo_rd_en, fifo_full, fifo_empty;
|
wire fifo_rd_en, fifo_full, fifo_empty;
|
||||||
wire [DATA_WIDTH-1:0] fifo_rd_data;
|
wire [AMP_WIDTH-1:0] fifo_rd_data;
|
||||||
|
|
||||||
fifo #(.ADDR_WIDTH(4), .DATA_WIDTH(16)) sample_buf(
|
fifo #(.ADDR_WIDTH(4), .DATA_WIDTH(16)) sample_buf(
|
||||||
clk, reset,
|
clk, reset,
|
||||||
fifo_wr_en, fifo_rd_en,
|
fifo_wr_en, fifo_rd_en,
|
||||||
wr_data, fifo_rd_data,
|
wr_data[AMP_WIDTH-1:0], fifo_rd_data,
|
||||||
fifo_full,
|
fifo_full,
|
||||||
fifo_empty
|
fifo_empty
|
||||||
);
|
);
|
||||||
|
|
@ -166,9 +169,14 @@ module tdraudio #(DATA_WIDTH=32) (
|
||||||
localparam AMP_BIAS = 32768;
|
localparam AMP_BIAS = 32768;
|
||||||
localparam DAC_WIDTH = 18;
|
localparam DAC_WIDTH = 18;
|
||||||
|
|
||||||
|
/* avoid warning about unconnected port */
|
||||||
|
(* keep="soft" *) wire [DATA_WIDTH-1:AMP_WIDTH] _unused = wr_data[DATA_WIDTH-1:AMP_WIDTH];
|
||||||
|
|
||||||
wire [4:0] chan_sel = io_addr[6:2];
|
wire [4:0] chan_sel = io_addr[6:2];
|
||||||
wire [1:0] reg_sel = io_addr[1:0];
|
wire [1:0] reg_sel = io_addr[1:0];
|
||||||
|
|
||||||
|
wire [AMP_WIDTH-1:0] amp_wr_data = wr_data[AMP_WIDTH-1:0];
|
||||||
|
|
||||||
wire [AMP_WIDTH-1:0] chan0_amp;
|
wire [AMP_WIDTH-1:0] chan0_amp;
|
||||||
wire [DATA_WIDTH-1:0] chan0_rd_data;
|
wire [DATA_WIDTH-1:0] chan0_rd_data;
|
||||||
wire chan0_running;
|
wire chan0_running;
|
||||||
|
|
@ -210,25 +218,25 @@ module tdraudio #(DATA_WIDTH=32) (
|
||||||
{DATA_WIDTH{1'b1}};
|
{DATA_WIDTH{1'b1}};
|
||||||
|
|
||||||
wavegen chan0(clk, reset, reg_sel,
|
wavegen chan0(clk, reset, reg_sel,
|
||||||
chan0_rd_data, wr_data,
|
chan0_rd_data, amp_wr_data,
|
||||||
chan0_rd_en, chan0_wr_en,
|
chan0_rd_en, chan0_wr_en,
|
||||||
chan0_amp,
|
chan0_amp,
|
||||||
chan0_running, chan0_irq);
|
chan0_running, chan0_irq);
|
||||||
|
|
||||||
wavegen chan1(clk, reset, reg_sel,
|
wavegen chan1(clk, reset, reg_sel,
|
||||||
chan1_rd_data, wr_data,
|
chan1_rd_data, amp_wr_data,
|
||||||
chan1_rd_en, chan1_wr_en,
|
chan1_rd_en, chan1_wr_en,
|
||||||
chan1_amp,
|
chan1_amp,
|
||||||
chan1_running, chan1_irq);
|
chan1_running, chan1_irq);
|
||||||
|
|
||||||
wavegen chan2(clk, reset, reg_sel,
|
wavegen chan2(clk, reset, reg_sel,
|
||||||
chan2_rd_data, wr_data,
|
chan2_rd_data, amp_wr_data,
|
||||||
chan2_rd_en, chan2_wr_en,
|
chan2_rd_en, chan2_wr_en,
|
||||||
chan2_amp,
|
chan2_amp,
|
||||||
chan2_irq, chan2_running);
|
chan2_irq, chan2_running);
|
||||||
|
|
||||||
wavegen chan3(clk, reset, reg_sel,
|
wavegen chan3(clk, reset, reg_sel,
|
||||||
chan3_rd_data, wr_data,
|
chan3_rd_data, amp_wr_data,
|
||||||
chan3_rd_en, chan3_wr_en,
|
chan3_rd_en, chan3_wr_en,
|
||||||
chan3_amp,
|
chan3_amp,
|
||||||
chan3_running, chan3_irq);
|
chan3_running, chan3_irq);
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,6 @@
|
||||||
module top(
|
module top(
|
||||||
input wire clk,
|
input wire clk,
|
||||||
input wire rst,
|
input wire rst,
|
||||||
input wire btn0,
|
|
||||||
input wire sw0,
|
|
||||||
input wire sw1,
|
|
||||||
output wire led0,
|
output wire led0,
|
||||||
output wire led1,
|
output wire led1,
|
||||||
output wire led2,
|
output wire led2,
|
||||||
|
|
@ -229,6 +226,15 @@ module top(
|
||||||
assign uart_rd_data = { {WIDTH-10{1'b1}}, uart_rx_avail, uart_tx_busy, uart_rx_data };
|
assign uart_rd_data = { {WIDTH-10{1'b1}}, uart_rx_avail, uart_tx_busy, uart_rx_data };
|
||||||
|
|
||||||
wire audio_irq;
|
wire audio_irq;
|
||||||
|
|
||||||
|
buart #(.CLKFREQ(`clkfreq)) uart0(`clock, rst,
|
||||||
|
uart_baud,
|
||||||
|
uart_txd_in, uart_rxd_out,
|
||||||
|
uart_rx_clear, uart_tx_en,
|
||||||
|
uart_rx_avail, uart_tx_busy,
|
||||||
|
uart_tx_data, uart_rx_data);
|
||||||
|
|
||||||
|
// audio controller
|
||||||
`ifdef ENABLE_TDRAUDIO
|
`ifdef ENABLE_TDRAUDIO
|
||||||
wire [WIDTH-1:0] tdraudio_wr_data;
|
wire [WIDTH-1:0] tdraudio_wr_data;
|
||||||
wire [WIDTH-1:0] tdraudio_rd_data;
|
wire [WIDTH-1:0] tdraudio_rd_data;
|
||||||
|
|
@ -273,13 +279,6 @@ module top(
|
||||||
`endif
|
`endif
|
||||||
-1;
|
-1;
|
||||||
|
|
||||||
buart #(.CLKFREQ(`clkfreq)) uart0(`clock, rst,
|
|
||||||
uart_baud,
|
|
||||||
uart_txd_in, uart_rxd_out,
|
|
||||||
uart_rx_clear, uart_tx_en,
|
|
||||||
uart_rx_avail, uart_tx_busy,
|
|
||||||
uart_tx_data, uart_rx_data);
|
|
||||||
|
|
||||||
// CPU -----------------------------------------------------------------
|
// CPU -----------------------------------------------------------------
|
||||||
stackcpu cpu0(.clk(`clock), .rst(rst), .irq(irq),
|
stackcpu cpu0(.clk(`clock), .rst(rst), .irq(irq),
|
||||||
.addr(mem_addr),
|
.addr(mem_addr),
|
||||||
|
|
@ -287,7 +286,7 @@ module top(
|
||||||
.read_ins(dram_read_ins),
|
.read_ins(dram_read_ins),
|
||||||
.data_out(mem_write_data), .write_enable(mem_write_enable),
|
.data_out(mem_write_data), .write_enable(mem_write_enable),
|
||||||
.mem_wait(mem_wait),
|
.mem_wait(mem_wait),
|
||||||
.led1(led1), .led2(led2), .led3(led3));
|
.debug1(led1), .debug2(led2), .debug3(led3));
|
||||||
|
|
||||||
// Interrupt Controller
|
// Interrupt Controller
|
||||||
irqctrl irqctrl0(`clock, irq_in, irqc_cs, mem_write_enable,
|
irqctrl irqctrl0(`clock, irq_in, irqc_cs, mem_write_enable,
|
||||||
|
|
|
||||||
|
|
@ -356,15 +356,12 @@
|
||||||
</Simulator>
|
</Simulator>
|
||||||
</Simulators>
|
</Simulators>
|
||||||
<Runs Version="1" Minor="22">
|
<Runs Version="1" Minor="22">
|
||||||
<Run Id="synth_1" Type="Ft3:Synth" SrcSet="sources_1" Part="xc7a35ticsg324-1L" ConstrsSet="constrs_1" Description="Performs general area optimizations including changing the threshold for control set optimizations, forcing ternary adder implementation, applying lower thresholds for use of carry chain in comparators and also area optimized mux optimizations." AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" State="current" Dir="$PRUNDIR/synth_1" IncludeInArchive="true" IsChild="false" AutoIncrementalDir="$PSRCDIR/utils_1/imports/synth_1" AutoRQSDir="$PSRCDIR/utils_1/imports/synth_1" ParallelReportGen="true">
|
<Run Id="synth_1" Type="Ft3:Synth" SrcSet="sources_1" Part="xc7a35ticsg324-1L" ConstrsSet="constrs_1" Description="Vivado Synthesis Defaults" AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" State="current" Dir="$PRUNDIR/synth_1" IncludeInArchive="true" IsChild="false" AutoIncrementalDir="$PSRCDIR/utils_1/imports/synth_1" AutoRQSDir="$PSRCDIR/utils_1/imports/synth_1" ParallelReportGen="true">
|
||||||
<Strategy Version="1" Minor="2">
|
<Strategy Version="1" Minor="2">
|
||||||
<StratHandle Name="Flow_AreaOptimized_high" Flow="Vivado Synthesis 2024">
|
<StratHandle Name="Vivado Synthesis Defaults" Flow="Vivado Synthesis 2024">
|
||||||
<Desc>Performs general area optimizations including changing the threshold for control set optimizations, forcing ternary adder implementation, applying lower thresholds for use of carry chain in comparators and also area optimized mux optimizations.</Desc>
|
<Desc>Vivado Synthesis Defaults</Desc>
|
||||||
</StratHandle>
|
</StratHandle>
|
||||||
<Step Id="synth_design">
|
<Step Id="synth_design"/>
|
||||||
<Option Id="ControlSetOptThreshold">1</Option>
|
|
||||||
<Option Id="Directive">1</Option>
|
|
||||||
</Step>
|
|
||||||
</Strategy>
|
</Strategy>
|
||||||
<GeneratedRun Dir="$PRUNDIR" File="gen_run.xml"/>
|
<GeneratedRun Dir="$PRUNDIR" File="gen_run.xml"/>
|
||||||
<ReportStrategy Name="Vivado Synthesis Default Reports" Flow="Vivado Synthesis 2024"/>
|
<ReportStrategy Name="Vivado Synthesis Default Reports" Flow="Vivado Synthesis 2024"/>
|
||||||
|
|
@ -381,26 +378,18 @@
|
||||||
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
<Report Name="ROUTE_DESIGN.REPORT_METHODOLOGY" Enabled="1"/>
|
||||||
<RQSFiles/>
|
<RQSFiles/>
|
||||||
</Run>
|
</Run>
|
||||||
<Run Id="impl_1" Type="Ft2:EntireDesign" Part="xc7a35ticsg324-1L" ConstrsSet="constrs_1" Description="Uses multiple algorithms for optimization, placement, and routing to get potentially better results." AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" State="current" Dir="$PRUNDIR/impl_1" SynthRun="synth_1" IncludeInArchive="true" IsChild="false" GenFullBitstream="true" AutoIncrementalDir="$PSRCDIR/utils_1/imports/impl_1" LaunchOptions="-jobs 6 " AutoRQSDir="$PSRCDIR/utils_1/imports/impl_1" ParallelReportGen="true">
|
<Run Id="impl_1" Type="Ft2:EntireDesign" Part="xc7a35ticsg324-1L" ConstrsSet="constrs_1" Description="Default settings for Implementation." AutoIncrementalCheckpoint="false" WriteIncrSynthDcp="false" State="current" Dir="$PRUNDIR/impl_1" SynthRun="synth_1" IncludeInArchive="true" IsChild="false" GenFullBitstream="true" AutoIncrementalDir="$PSRCDIR/utils_1/imports/impl_1" LaunchOptions="-jobs 6 " AutoRQSDir="$PSRCDIR/utils_1/imports/impl_1" ParallelReportGen="true">
|
||||||
<Strategy Version="1" Minor="2">
|
<Strategy Version="1" Minor="2">
|
||||||
<StratHandle Name="Performance_Explore" Flow="Vivado Implementation 2024">
|
<StratHandle Name="Vivado Implementation Defaults" Flow="Vivado Implementation 2024">
|
||||||
<Desc>Uses multiple algorithms for optimization, placement, and routing to get potentially better results.</Desc>
|
<Desc>Default settings for Implementation.</Desc>
|
||||||
</StratHandle>
|
</StratHandle>
|
||||||
<Step Id="init_design"/>
|
<Step Id="init_design"/>
|
||||||
<Step Id="opt_design">
|
<Step Id="opt_design"/>
|
||||||
<Option Id="Directive">0</Option>
|
|
||||||
</Step>
|
|
||||||
<Step Id="power_opt_design"/>
|
<Step Id="power_opt_design"/>
|
||||||
<Step Id="place_design">
|
<Step Id="place_design"/>
|
||||||
<Option Id="Directive">0</Option>
|
|
||||||
</Step>
|
|
||||||
<Step Id="post_place_power_opt_design"/>
|
<Step Id="post_place_power_opt_design"/>
|
||||||
<Step Id="phys_opt_design">
|
<Step Id="phys_opt_design"/>
|
||||||
<Option Id="Directive">0</Option>
|
<Step Id="route_design"/>
|
||||||
</Step>
|
|
||||||
<Step Id="route_design">
|
|
||||||
<Option Id="Directive">0</Option>
|
|
||||||
</Step>
|
|
||||||
<Step Id="post_route_phys_opt_design"/>
|
<Step Id="post_route_phys_opt_design"/>
|
||||||
<Step Id="write_bitstream">
|
<Step Id="write_bitstream">
|
||||||
<Option Id="BinFile">1</Option>
|
<Option Id="BinFile">1</Option>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue