vivado-files
This commit is contained in:
parent
53670599a8
commit
9743fcdfc5
|
@ -0,0 +1,46 @@
|
|||
#set_property PACKAGE_PIN H16 [get_ports clk]
|
||||
#set_property IOSTANDARD LVCMOS33 [get_ports clk]
|
||||
#create_clock -add -name sys_clk_pin -period 8.00 -waveform {0 4} [get_ports clk]
|
||||
|
||||
set_property -dict { PACKAGE_PIN Y16 IOSTANDARD LVCMOS33 } [get_ports { uart_out }]; #IO_L7P_T1_34 Sch=ja_p[2]
|
||||
set_property -dict { PACKAGE_PIN Y17 IOSTANDARD LVCMOS33 } [get_ports { uart_in }]; #IO_L7N_T1_34 Sch=ja_n[2]
|
||||
|
||||
set_property -dict { PACKAGE_PIN W18 IOSTANDARD LVCMOS33 } [get_ports { uart2_out }]; #IO_L7P_T1_34 Sch=ja_p[2]
|
||||
set_property -dict { PACKAGE_PIN W19 IOSTANDARD LVCMOS33 } [get_ports { uart2_in }]; #IO_L7N_T1_34 Sch=ja_n[2]
|
||||
|
||||
##PmodB
|
||||
set_property -dict { PACKAGE_PIN W14 IOSTANDARD LVCMOS33 } [get_ports { pwm_out[0] }]; #IO_L8P_T1_34 Sch=jb_p[1]
|
||||
set_property -dict { PACKAGE_PIN Y14 IOSTANDARD LVCMOS33 } [get_ports { pwm_out[1] }]; #IO_L8N_T1_34 Sch=jb_n[1]
|
||||
set_property -dict { PACKAGE_PIN T11 IOSTANDARD LVCMOS33 } [get_ports { pwm_out[2] }]; #IO_L1P_T0_34 Sch=jb_p[2]
|
||||
set_property -dict { PACKAGE_PIN T10 IOSTANDARD LVCMOS33 } [get_ports { pwm_out[3] }]; #IO_L1N_T0_34 Sch=jb_n[2]
|
||||
set_property -dict { PACKAGE_PIN V16 IOSTANDARD LVCMOS33 } [get_ports { clk_out }]; #IO_L18P_T2_34 Sch=jb_p[3]
|
||||
set_property -dict { PACKAGE_PIN W16 IOSTANDARD LVCMOS33 } [get_ports { DIR_enable }]; #IO_L18N_T2_34 Sch=jb_n[3]
|
||||
set_property -dict { PACKAGE_PIN V12 IOSTANDARD LVCMOS33 } [get_ports { DIR_serial }]; #IO_L4P_T0_34 Sch=jb_p[4]
|
||||
set_property -dict { PACKAGE_PIN W13 IOSTANDARD LVCMOS33 } [get_ports { DIR_latch }]; #IO_L4N_T0_34 Sch=jb_n[4]
|
||||
|
||||
##LEDs
|
||||
|
||||
set_property -dict { PACKAGE_PIN R14 IOSTANDARD LVCMOS33 } [get_ports { led_out[0] }]; #IO_L6N_T0_VREF_34 Sch=led[0]
|
||||
set_property -dict { PACKAGE_PIN P14 IOSTANDARD LVCMOS33 } [get_ports { led_out[1] }]; #IO_L6P_T0_34 Sch=led[1]
|
||||
set_property -dict { PACKAGE_PIN N16 IOSTANDARD LVCMOS33 } [get_ports { led_out[2] }]; #IO_L21N_T3_DQS_AD14N_35 Sch=led[2]
|
||||
set_property -dict { PACKAGE_PIN M14 IOSTANDARD LVCMOS33 } [get_ports { led_out[3] }]; #IO_L23P_T3_35 Sch=led[3]
|
||||
|
||||
##Buttons
|
||||
|
||||
set_property -dict { PACKAGE_PIN D19 IOSTANDARD LVCMOS33 } [get_ports { btn[0] }]; #IO_L4P_T0_35 Sch=btn[0]
|
||||
set_property -dict { PACKAGE_PIN D20 IOSTANDARD LVCMOS33 } [get_ports { btn[1] }]; #IO_L4N_T0_35 Sch=btn[1]
|
||||
set_property -dict { PACKAGE_PIN L20 IOSTANDARD LVCMOS33 } [get_ports { btn[2] }]; #IO_L9N_T1_DQS_AD3N_35 Sch=btn[2]
|
||||
set_property -dict { PACKAGE_PIN L19 IOSTANDARD LVCMOS33 } [get_ports { btn[3] }]; #IO_L9P_T1_DQS_AD3P_35 Sch=btn[3]
|
||||
|
||||
## Audio
|
||||
set_property -dict {PACKAGE_PIN U9 IOSTANDARD LVCMOS33} [get_ports IIC_1_scl_io]
|
||||
set_property PULLUP true [get_ports IIC_1_scl_io];
|
||||
set_property -dict {PACKAGE_PIN T9 IOSTANDARD LVCMOS33} [get_ports IIC_1_sda_io]
|
||||
set_property PULLUP true [get_ports IIC_1_sda_io];
|
||||
set_property -dict { PACKAGE_PIN U5 IOSTANDARD LVCMOS33 } [get_ports audio_clk_10MHz];
|
||||
set_property -dict { PACKAGE_PIN R18 IOSTANDARD LVCMOS33 } [get_ports bclk];
|
||||
set_property -dict { PACKAGE_PIN T17 IOSTANDARD LVCMOS33 } [get_ports lrclk];
|
||||
set_property -dict { PACKAGE_PIN G18 IOSTANDARD LVCMOS33 } [get_ports sdata_o];
|
||||
set_property -dict { PACKAGE_PIN F17 IOSTANDARD LVCMOS33 } [get_ports sdata_i];
|
||||
set_property -dict { PACKAGE_PIN M17 IOSTANDARD LVCMOS33 } [get_ports {codec_addr[0]}]
|
||||
set_property -dict { PACKAGE_PIN M18 IOSTANDARD LVCMOS33 } [get_ports {codec_addr[1]}]
|
|
@ -0,0 +1,747 @@
|
|||
`timescale 1 ps / 1 ps
|
||||
`include "clocking.vh"
|
||||
|
||||
module rocketchip_wrapper
|
||||
(
|
||||
///////////modified///////////
|
||||
uart_in,
|
||||
uart_out,
|
||||
uart2_in,
|
||||
uart2_out,
|
||||
pwm_out,
|
||||
clk_out, //25Mhz
|
||||
DIR_serial,
|
||||
DIR_enable,
|
||||
DIR_latch,
|
||||
led_out,
|
||||
btn,
|
||||
IIC_1_scl_io,
|
||||
IIC_1_sda_io,
|
||||
audio_clk_10MHz,
|
||||
bclk,
|
||||
codec_addr,
|
||||
lrclk,
|
||||
sdata_i,
|
||||
sdata_o,
|
||||
|
||||
DDR_addr,
|
||||
DDR_ba,
|
||||
DDR_cas_n,
|
||||
DDR_ck_n,
|
||||
DDR_ck_p,
|
||||
DDR_cke,
|
||||
DDR_cs_n,
|
||||
DDR_dm,
|
||||
DDR_dq,
|
||||
DDR_dqs_n,
|
||||
DDR_dqs_p,
|
||||
DDR_odt,
|
||||
DDR_ras_n,
|
||||
DDR_reset_n,
|
||||
DDR_we_n,
|
||||
FIXED_IO_ddr_vrn,
|
||||
FIXED_IO_ddr_vrp,
|
||||
FIXED_IO_mio,
|
||||
FIXED_IO_ps_clk,
|
||||
FIXED_IO_ps_porb,
|
||||
FIXED_IO_ps_srstb,
|
||||
`ifndef differential_clock
|
||||
///////////modified///////////
|
||||
// clk
|
||||
);
|
||||
`else
|
||||
SYSCLK_P,
|
||||
SYSCLK_N);
|
||||
`endif
|
||||
|
||||
///////////modified///////////
|
||||
input uart_in;
|
||||
input uart2_in;
|
||||
output uart_out;
|
||||
output uart2_out;
|
||||
output [3:0]pwm_out;
|
||||
output clk_out;
|
||||
output DIR_serial;
|
||||
output DIR_enable;
|
||||
output DIR_latch;
|
||||
assign pwm_out = 4'hf;
|
||||
output [3:0]led_out;
|
||||
input [3:0]btn;
|
||||
inout IIC_1_scl_io;
|
||||
inout IIC_1_sda_io;
|
||||
output audio_clk_10MHz;
|
||||
output bclk;
|
||||
output [1:0]codec_addr;
|
||||
output lrclk;
|
||||
input sdata_i;
|
||||
output sdata_o;
|
||||
|
||||
inout [14:0]DDR_addr;
|
||||
inout [2:0]DDR_ba;
|
||||
inout DDR_cas_n;
|
||||
inout DDR_ck_n;
|
||||
inout DDR_ck_p;
|
||||
inout DDR_cke;
|
||||
inout DDR_cs_n;
|
||||
inout [3:0]DDR_dm;
|
||||
inout [31:0]DDR_dq;
|
||||
inout [3:0]DDR_dqs_n;
|
||||
inout [3:0]DDR_dqs_p;
|
||||
inout DDR_odt;
|
||||
inout DDR_ras_n;
|
||||
inout DDR_reset_n;
|
||||
inout DDR_we_n;
|
||||
|
||||
inout FIXED_IO_ddr_vrn;
|
||||
inout FIXED_IO_ddr_vrp;
|
||||
inout [53:0]FIXED_IO_mio;
|
||||
inout FIXED_IO_ps_clk;
|
||||
inout FIXED_IO_ps_porb;
|
||||
inout FIXED_IO_ps_srstb;
|
||||
|
||||
///////////modified///////////
|
||||
//`ifndef differential_clock
|
||||
// input clk;
|
||||
//`else
|
||||
// input SYSCLK_P;
|
||||
// input SYSCLK_N;
|
||||
//`endif
|
||||
|
||||
wire FCLK_RESET0_N;
|
||||
|
||||
wire [31:0]M_AXI_araddr;
|
||||
wire [1:0]M_AXI_arburst;
|
||||
wire [7:0]M_AXI_arlen;
|
||||
wire M_AXI_arready;
|
||||
wire [2:0]M_AXI_arsize;
|
||||
wire M_AXI_arvalid;
|
||||
wire [31:0]M_AXI_awaddr;
|
||||
wire [1:0]M_AXI_awburst;
|
||||
wire [7:0]M_AXI_awlen;
|
||||
wire [3:0]M_AXI_wstrb;
|
||||
wire M_AXI_awready;
|
||||
wire [2:0]M_AXI_awsize;
|
||||
wire M_AXI_awvalid;
|
||||
wire M_AXI_bready;
|
||||
wire M_AXI_bvalid;
|
||||
wire [31:0]M_AXI_rdata;
|
||||
wire M_AXI_rlast;
|
||||
wire M_AXI_rready;
|
||||
wire M_AXI_rvalid;
|
||||
wire [31:0]M_AXI_wdata;
|
||||
wire M_AXI_wlast;
|
||||
wire M_AXI_wready;
|
||||
wire M_AXI_wvalid;
|
||||
wire [11:0] M_AXI_arid, M_AXI_awid; // outputs from ARM core
|
||||
wire [11:0] M_AXI_bid, M_AXI_rid; // inputs to ARM core
|
||||
|
||||
wire S_AXI_arready;
|
||||
wire S_AXI_arvalid;
|
||||
wire [31:0] S_AXI_araddr;
|
||||
wire [5:0] S_AXI_arid;
|
||||
wire [2:0] S_AXI_arsize;
|
||||
wire [7:0] S_AXI_arlen;
|
||||
wire [1:0] S_AXI_arburst;
|
||||
wire S_AXI_arlock;
|
||||
wire [3:0] S_AXI_arcache;
|
||||
wire [2:0] S_AXI_arprot;
|
||||
wire [3:0] S_AXI_arqos;
|
||||
//wire [3:0] S_AXI_arregion;
|
||||
|
||||
wire S_AXI_awready;
|
||||
wire S_AXI_awvalid;
|
||||
wire [31:0] S_AXI_awaddr;
|
||||
wire [5:0] S_AXI_awid;
|
||||
wire [2:0] S_AXI_awsize;
|
||||
wire [7:0] S_AXI_awlen;
|
||||
wire [1:0] S_AXI_awburst;
|
||||
wire S_AXI_awlock;
|
||||
wire [3:0] S_AXI_awcache;
|
||||
wire [2:0] S_AXI_awprot;
|
||||
wire [3:0] S_AXI_awqos;
|
||||
//wire [3:0] S_AXI_awregion;
|
||||
|
||||
wire S_AXI_wready;
|
||||
wire S_AXI_wvalid;
|
||||
wire [7:0] S_AXI_wstrb;
|
||||
wire [63:0] S_AXI_wdata;
|
||||
wire S_AXI_wlast;
|
||||
|
||||
wire S_AXI_bready;
|
||||
wire S_AXI_bvalid;
|
||||
wire [1:0] S_AXI_bresp;
|
||||
wire [5:0] S_AXI_bid;
|
||||
|
||||
wire S_AXI_rready;
|
||||
wire S_AXI_rvalid;
|
||||
wire [1:0] S_AXI_rresp;
|
||||
wire [5:0] S_AXI_rid;
|
||||
wire [63:0] S_AXI_rdata;
|
||||
wire S_AXI_rlast;
|
||||
|
||||
|
||||
wire io_mmio_axi_aw_ready;
|
||||
wire io_mmio_axi_aw_valid;
|
||||
wire [3:0] io_mmio_axi_aw_bits_id;
|
||||
/////////////modified////////////
|
||||
wire [31:0] io_mmio_axi_aw_bits_addr;
|
||||
wire [7:0] io_mmio_axi_aw_bits_len;
|
||||
wire [2:0] io_mmio_axi_aw_bits_size;
|
||||
wire [1:0] io_mmio_axi_aw_bits_burst;
|
||||
wire io_mmio_axi_aw_bits_lock;
|
||||
wire [3:0] io_mmio_axi_aw_bits_cache;
|
||||
wire [2:0] io_mmio_axi_aw_bits_prot;
|
||||
wire [3:0] io_mmio_axi_aw_bits_qos;
|
||||
wire io_mmio_axi_w_ready;
|
||||
wire io_mmio_axi_w_valid;
|
||||
wire [63:0] io_mmio_axi_w_bits_data;
|
||||
wire [7:0] io_mmio_axi_w_bits_strb;
|
||||
wire io_mmio_axi_w_bits_last;
|
||||
wire io_mmio_axi_b_ready;
|
||||
wire io_mmio_axi_b_valid;
|
||||
wire [3:0] io_mmio_axi_b_bits_id;
|
||||
wire [1:0] io_mmio_axi_b_bits_resp;
|
||||
wire io_mmio_axi_ar_ready;
|
||||
wire io_mmio_axi_ar_valid;
|
||||
wire [3:0] io_mmio_axi_ar_bits_id;
|
||||
/////////////modified////////////
|
||||
wire [31:0] io_mmio_axi_ar_bits_addr;
|
||||
wire [7:0] io_mmio_axi_ar_bits_len;
|
||||
wire [2:0] io_mmio_axi_ar_bits_size;
|
||||
wire [1:0] io_mmio_axi_ar_bits_burst;
|
||||
wire io_mmio_axi_ar_bits_lock;
|
||||
wire [3:0] io_mmio_axi_ar_bits_cache;
|
||||
wire [2:0] io_mmio_axi_ar_bits_prot;
|
||||
wire [3:0] io_mmio_axi_ar_bits_qos;
|
||||
wire io_mmio_axi_r_ready;
|
||||
wire io_mmio_axi_r_valid;
|
||||
wire [3:0] io_mmio_axi_r_bits_id;
|
||||
wire [63:0] io_mmio_axi_r_bits_data;
|
||||
wire [1:0] io_mmio_axi_r_bits_resp;
|
||||
wire io_mmio_axi_r_bits_last;
|
||||
|
||||
wire IIC_1_scl_i;
|
||||
wire IIC_1_scl_io;
|
||||
wire IIC_1_scl_o;
|
||||
wire IIC_1_scl_t;
|
||||
wire IIC_1_sda_i;
|
||||
wire IIC_1_sda_io;
|
||||
wire IIC_1_sda_o;
|
||||
wire IIC_1_sda_t;
|
||||
|
||||
wire [1:0] rocket_interrupts;
|
||||
wire [7:0] gpio_out;
|
||||
wire [63:0]GPIO_0;
|
||||
assign led_out = GPIO_0[3:0];
|
||||
// assign rocket_interrupts = btn[1:0];
|
||||
IOBUF IIC_1_scl_iobuf
|
||||
(.I(IIC_1_scl_o),
|
||||
.IO(IIC_1_scl_io),
|
||||
.O(IIC_1_scl_i),
|
||||
.T(IIC_1_scl_t));
|
||||
IOBUF IIC_1_sda_iobuf
|
||||
(.I(IIC_1_sda_o),
|
||||
.IO(IIC_1_sda_io),
|
||||
.O(IIC_1_sda_i),
|
||||
.T(IIC_1_sda_t));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
wire reset, reset_cpu;
|
||||
wire host_clk;
|
||||
wire gclk_i, gclk_fbout, host_clk_i, mmcm_locked;
|
||||
|
||||
system system_i
|
||||
(
|
||||
/////////////modified////////////
|
||||
.uart_in(uart_in),
|
||||
.uart_out(uart_out),
|
||||
.uart2_in(uart2_in),
|
||||
.uart2_out(uart2_out),
|
||||
.gpio_out(gpio_out),
|
||||
.IIC_1_scl_i(IIC_1_scl_i),
|
||||
.IIC_1_scl_o(IIC_1_scl_o),
|
||||
.IIC_1_scl_t(IIC_1_scl_t),
|
||||
.IIC_1_sda_i(IIC_1_sda_i),
|
||||
.IIC_1_sda_o(IIC_1_sda_o),
|
||||
.IIC_1_sda_t(IIC_1_sda_t),
|
||||
.audio_clk_10MHz(audio_clk_10MHz),
|
||||
.bclk(bclk),
|
||||
.codec_addr(codec_addr),
|
||||
.lrclk(lrclk),
|
||||
.sdata_i(sdata_i),
|
||||
.sdata_o(sdata_o),
|
||||
|
||||
|
||||
.DDR_addr(DDR_addr),
|
||||
.DDR_ba(DDR_ba),
|
||||
.DDR_cas_n(DDR_cas_n),
|
||||
.DDR_ck_n(DDR_ck_n),
|
||||
.DDR_ck_p(DDR_ck_p),
|
||||
.DDR_cke(DDR_cke),
|
||||
.DDR_cs_n(DDR_cs_n),
|
||||
.DDR_dm(DDR_dm),
|
||||
.DDR_dq(DDR_dq),
|
||||
.DDR_dqs_n(DDR_dqs_n),
|
||||
.DDR_dqs_p(DDR_dqs_p),
|
||||
.DDR_odt(DDR_odt),
|
||||
.DDR_ras_n(DDR_ras_n),
|
||||
.DDR_reset_n(DDR_reset_n),
|
||||
.DDR_we_n(DDR_we_n),
|
||||
.FCLK_RESET0_N(FCLK_RESET0_N),
|
||||
.FIXED_IO_ddr_vrn(FIXED_IO_ddr_vrn),
|
||||
.FIXED_IO_ddr_vrp(FIXED_IO_ddr_vrp),
|
||||
.FIXED_IO_mio(FIXED_IO_mio),
|
||||
.FIXED_IO_ps_clk(FIXED_IO_ps_clk),
|
||||
.FIXED_IO_ps_porb(FIXED_IO_ps_porb),
|
||||
.FIXED_IO_ps_srstb(FIXED_IO_ps_srstb),
|
||||
// master AXI interface (zynq = master, fpga = slave)
|
||||
.M_AXI_araddr(M_AXI_araddr),
|
||||
.M_AXI_arburst(M_AXI_arburst), // burst type
|
||||
.M_AXI_arcache(),
|
||||
.M_AXI_arid(M_AXI_arid),
|
||||
.M_AXI_arlen(M_AXI_arlen), // burst length (#transfers)
|
||||
.M_AXI_arlock(),
|
||||
.M_AXI_arprot(),
|
||||
.M_AXI_arqos(),
|
||||
.M_AXI_arready(M_AXI_arready),
|
||||
.M_AXI_arregion(),
|
||||
.M_AXI_arsize(M_AXI_arsize), // burst size (bits/transfer)
|
||||
.M_AXI_arvalid(M_AXI_arvalid),
|
||||
//
|
||||
.M_AXI_awaddr(M_AXI_awaddr),
|
||||
.M_AXI_awburst(M_AXI_awburst),
|
||||
.M_AXI_awcache(),
|
||||
.M_AXI_awid(M_AXI_awid),
|
||||
.M_AXI_awlen(M_AXI_awlen),
|
||||
.M_AXI_awlock(),
|
||||
.M_AXI_awprot(),
|
||||
.M_AXI_awqos(),
|
||||
.M_AXI_awready(M_AXI_awready),
|
||||
.M_AXI_awregion(),
|
||||
.M_AXI_awsize(M_AXI_awsize),
|
||||
.M_AXI_awvalid(M_AXI_awvalid),
|
||||
//
|
||||
.M_AXI_bid(M_AXI_bid),
|
||||
.M_AXI_bready(M_AXI_bready),
|
||||
.M_AXI_bresp(2'b00),
|
||||
.M_AXI_bvalid(M_AXI_bvalid),
|
||||
//
|
||||
.M_AXI_rdata(M_AXI_rdata),
|
||||
.M_AXI_rid(M_AXI_rid),
|
||||
.M_AXI_rlast(M_AXI_rlast),
|
||||
.M_AXI_rready(M_AXI_rready),
|
||||
.M_AXI_rresp(),
|
||||
.M_AXI_rvalid(M_AXI_rvalid),
|
||||
//
|
||||
.M_AXI_wdata(M_AXI_wdata),
|
||||
.M_AXI_wlast(M_AXI_wlast),
|
||||
.M_AXI_wready(M_AXI_wready),
|
||||
.M_AXI_wstrb(M_AXI_wstrb),
|
||||
.M_AXI_wvalid(M_AXI_wvalid),
|
||||
|
||||
// slave AXI interface (fpga = master, zynq = slave)
|
||||
// connected directly to DDR controller to handle test chip mem
|
||||
.S_AXI_araddr(S_AXI_araddr),
|
||||
.S_AXI_arburst(S_AXI_arburst),
|
||||
.S_AXI_arcache(S_AXI_arcache),
|
||||
.S_AXI_arid(S_AXI_arid),
|
||||
.S_AXI_arlen(S_AXI_arlen),
|
||||
.S_AXI_arlock(S_AXI_arlock),
|
||||
.S_AXI_arprot(S_AXI_arprot),
|
||||
.S_AXI_arqos(S_AXI_arqos),
|
||||
.S_AXI_arready(S_AXI_arready),
|
||||
.S_AXI_arregion(4'b0),
|
||||
.S_AXI_arsize(S_AXI_arsize),
|
||||
.S_AXI_arvalid(S_AXI_arvalid),
|
||||
//
|
||||
.S_AXI_awaddr(S_AXI_awaddr),
|
||||
.S_AXI_awburst(S_AXI_awburst),
|
||||
.S_AXI_awcache(S_AXI_awcache),
|
||||
.S_AXI_awid(S_AXI_awid),
|
||||
.S_AXI_awlen(S_AXI_awlen),
|
||||
.S_AXI_awlock(S_AXI_awlock),
|
||||
.S_AXI_awprot(S_AXI_awprot),
|
||||
.S_AXI_awqos(S_AXI_awqos),
|
||||
.S_AXI_awready(S_AXI_awready),
|
||||
.S_AXI_awregion(4'b0),
|
||||
.S_AXI_awsize(S_AXI_awsize),
|
||||
.S_AXI_awvalid(S_AXI_awvalid),
|
||||
//
|
||||
.S_AXI_bid(S_AXI_bid),
|
||||
.S_AXI_bready(S_AXI_bready),
|
||||
.S_AXI_bresp(S_AXI_bresp),
|
||||
.S_AXI_bvalid(S_AXI_bvalid),
|
||||
//
|
||||
.S_AXI_rid(S_AXI_rid),
|
||||
.S_AXI_rdata(S_AXI_rdata),
|
||||
.S_AXI_rlast(S_AXI_rlast),
|
||||
.S_AXI_rready(S_AXI_rready),
|
||||
.S_AXI_rresp(S_AXI_rresp),
|
||||
.S_AXI_rvalid(S_AXI_rvalid),
|
||||
//
|
||||
.S_AXI_wdata(S_AXI_wdata),
|
||||
.S_AXI_wlast(S_AXI_wlast),
|
||||
.S_AXI_wready(S_AXI_wready),
|
||||
.S_AXI_wstrb(S_AXI_wstrb),
|
||||
.S_AXI_wvalid(S_AXI_wvalid),
|
||||
///////////modified///////////
|
||||
.FCLK_CLK0(host_clk),
|
||||
// .ext_clk_in(host_clk),
|
||||
|
||||
///////////modified///////////
|
||||
.MMIO_S_AXI_araddr(io_mmio_axi_ar_bits_addr),
|
||||
.MMIO_S_AXI_arburst(io_mmio_axi_ar_bits_burst),
|
||||
.MMIO_S_AXI_arcache(io_mmio_axi_ar_bits_cache),
|
||||
.MMIO_S_AXI_arid(io_mmio_axi_ar_bits_id),
|
||||
.MMIO_S_AXI_arlen(io_mmio_axi_ar_bits_len),
|
||||
.MMIO_S_AXI_arlock(io_mmio_axi_ar_bits_lock),
|
||||
.MMIO_S_AXI_arprot(io_mmio_axi_ar_bits_prot),
|
||||
.MMIO_S_AXI_arqos(io_mmio_axi_ar_bits_qos),
|
||||
.MMIO_S_AXI_arready(io_mmio_axi_ar_ready),
|
||||
// .MMIO_S_AXI_arregion(4'b0),
|
||||
.MMIO_S_AXI_arsize(io_mmio_axi_ar_bits_size),
|
||||
.MMIO_S_AXI_arvalid(io_mmio_axi_ar_valid),
|
||||
.MMIO_S_AXI_awaddr(io_mmio_axi_aw_bits_addr),
|
||||
.MMIO_S_AXI_awburst(io_mmio_axi_aw_bits_burst),
|
||||
.MMIO_S_AXI_awcache(io_mmio_axi_aw_bits_cache),
|
||||
.MMIO_S_AXI_awid(io_mmio_axi_aw_bits_id),
|
||||
.MMIO_S_AXI_awlen(io_mmio_axi_aw_bits_len),
|
||||
.MMIO_S_AXI_awlock(io_mmio_axi_aw_bits_lock),
|
||||
.MMIO_S_AXI_awprot(io_mmio_axi_aw_bits_prot),
|
||||
.MMIO_S_AXI_awqos(io_mmio_axi_aw_bits_qos),
|
||||
.MMIO_S_AXI_awready(io_mmio_axi_aw_ready),
|
||||
// .MMIO_S_AXI_awregion(4'b0),
|
||||
.MMIO_S_AXI_awsize(io_mmio_axi_aw_bits_size),
|
||||
.MMIO_S_AXI_awvalid(io_mmio_axi_aw_valid),
|
||||
.MMIO_S_AXI_bid(io_mmio_axi_b_bits_id),
|
||||
.MMIO_S_AXI_bready(io_mmio_axi_b_ready),
|
||||
.MMIO_S_AXI_bresp(io_mmio_axi_b_bits_resp),
|
||||
.MMIO_S_AXI_bvalid(io_mmio_axi_b_valid),
|
||||
.MMIO_S_AXI_rid(io_mmio_axi_r_bits_id),
|
||||
.MMIO_S_AXI_rdata(io_mmio_axi_r_bits_data),
|
||||
.MMIO_S_AXI_rlast(io_mmio_axi_r_bits_last),
|
||||
.MMIO_S_AXI_rready(io_mmio_axi_r_ready),
|
||||
.MMIO_S_AXI_rresp(io_mmio_axi_r_bits_resp),
|
||||
.MMIO_S_AXI_rvalid(io_mmio_axi_r_valid),
|
||||
.MMIO_S_AXI_wdata(io_mmio_axi_w_bits_data),
|
||||
.MMIO_S_AXI_wlast(io_mmio_axi_w_bits_last),
|
||||
.MMIO_S_AXI_wready(io_mmio_axi_w_ready),
|
||||
.MMIO_S_AXI_wstrb(io_mmio_axi_w_bits_strb),
|
||||
.MMIO_S_AXI_wvalid(io_mmio_axi_w_valid),
|
||||
|
||||
.GPIO_0(GPIO_0),
|
||||
.interrupts(rocket_interrupts)
|
||||
|
||||
|
||||
);
|
||||
|
||||
///////////modified///////////
|
||||
// assign reset = !FCLK_RESET0_N || !mmcm_locked;
|
||||
assign reset = !FCLK_RESET0_N;
|
||||
|
||||
wire [31:0] mem_araddr;
|
||||
wire [31:0] mem_awaddr;
|
||||
|
||||
///////////modified///////////
|
||||
|
||||
// Memory given to Rocket is the upper 256 MB of the 512 MB DRAM
|
||||
// assign S_AXI_araddr = {4'd1, mem_araddr[27:0]};
|
||||
// assign S_AXI_awaddr = {4'd1, mem_awaddr[27:0]};
|
||||
assign S_AXI_araddr = mem_araddr - 32'h70000000;
|
||||
assign S_AXI_awaddr = mem_awaddr - 32'h70000000;
|
||||
|
||||
|
||||
Top top(
|
||||
.clock(host_clk),
|
||||
.reset(reset),
|
||||
|
||||
.io_ps_axi_slave_aw_ready (M_AXI_awready),
|
||||
.io_ps_axi_slave_aw_valid (M_AXI_awvalid),
|
||||
.io_ps_axi_slave_aw_bits_addr (M_AXI_awaddr),
|
||||
.io_ps_axi_slave_aw_bits_len (M_AXI_awlen),
|
||||
.io_ps_axi_slave_aw_bits_size (M_AXI_awsize),
|
||||
.io_ps_axi_slave_aw_bits_burst (M_AXI_awburst),
|
||||
.io_ps_axi_slave_aw_bits_id (M_AXI_awid),
|
||||
.io_ps_axi_slave_aw_bits_lock (1'b0),
|
||||
.io_ps_axi_slave_aw_bits_cache (4'b0),
|
||||
.io_ps_axi_slave_aw_bits_prot (3'b0),
|
||||
.io_ps_axi_slave_aw_bits_qos (4'b0),
|
||||
|
||||
.io_ps_axi_slave_ar_ready (M_AXI_arready),
|
||||
.io_ps_axi_slave_ar_valid (M_AXI_arvalid),
|
||||
.io_ps_axi_slave_ar_bits_addr (M_AXI_araddr),
|
||||
.io_ps_axi_slave_ar_bits_len (M_AXI_arlen),
|
||||
.io_ps_axi_slave_ar_bits_size (M_AXI_arsize),
|
||||
.io_ps_axi_slave_ar_bits_burst (M_AXI_arburst),
|
||||
.io_ps_axi_slave_ar_bits_id (M_AXI_arid),
|
||||
.io_ps_axi_slave_ar_bits_lock (1'b0),
|
||||
.io_ps_axi_slave_ar_bits_cache (4'b0),
|
||||
.io_ps_axi_slave_ar_bits_prot (3'b0),
|
||||
.io_ps_axi_slave_ar_bits_qos (4'b0),
|
||||
|
||||
.io_ps_axi_slave_w_valid (M_AXI_wvalid),
|
||||
.io_ps_axi_slave_w_ready (M_AXI_wready),
|
||||
.io_ps_axi_slave_w_bits_data (M_AXI_wdata),
|
||||
.io_ps_axi_slave_w_bits_strb (M_AXI_wstrb),
|
||||
.io_ps_axi_slave_w_bits_last (M_AXI_wlast),
|
||||
|
||||
.io_ps_axi_slave_r_valid (M_AXI_rvalid),
|
||||
.io_ps_axi_slave_r_ready (M_AXI_rready),
|
||||
.io_ps_axi_slave_r_bits_id (M_AXI_rid),
|
||||
.io_ps_axi_slave_r_bits_resp (M_AXI_rresp),
|
||||
.io_ps_axi_slave_r_bits_data (M_AXI_rdata),
|
||||
.io_ps_axi_slave_r_bits_last (M_AXI_rlast),
|
||||
|
||||
.io_ps_axi_slave_b_valid (M_AXI_bvalid),
|
||||
.io_ps_axi_slave_b_ready (M_AXI_bready),
|
||||
.io_ps_axi_slave_b_bits_id (M_AXI_bid),
|
||||
.io_ps_axi_slave_b_bits_resp (M_AXI_bresp),
|
||||
|
||||
.io_mem_axi_ar_valid (S_AXI_arvalid),
|
||||
.io_mem_axi_ar_ready (S_AXI_arready),
|
||||
.io_mem_axi_ar_bits_addr (mem_araddr),
|
||||
.io_mem_axi_ar_bits_id (S_AXI_arid),
|
||||
.io_mem_axi_ar_bits_size (S_AXI_arsize),
|
||||
.io_mem_axi_ar_bits_len (S_AXI_arlen),
|
||||
.io_mem_axi_ar_bits_burst (S_AXI_arburst),
|
||||
.io_mem_axi_ar_bits_cache (S_AXI_arcache),
|
||||
.io_mem_axi_ar_bits_lock (S_AXI_arlock),
|
||||
.io_mem_axi_ar_bits_prot (S_AXI_arprot),
|
||||
.io_mem_axi_ar_bits_qos (S_AXI_arqos),
|
||||
.io_mem_axi_aw_valid (S_AXI_awvalid),
|
||||
.io_mem_axi_aw_ready (S_AXI_awready),
|
||||
.io_mem_axi_aw_bits_addr (mem_awaddr),
|
||||
.io_mem_axi_aw_bits_id (S_AXI_awid),
|
||||
.io_mem_axi_aw_bits_size (S_AXI_awsize),
|
||||
.io_mem_axi_aw_bits_len (S_AXI_awlen),
|
||||
.io_mem_axi_aw_bits_burst (S_AXI_awburst),
|
||||
.io_mem_axi_aw_bits_cache (S_AXI_awcache),
|
||||
.io_mem_axi_aw_bits_lock (S_AXI_awlock),
|
||||
.io_mem_axi_aw_bits_prot (S_AXI_awprot),
|
||||
.io_mem_axi_aw_bits_qos (S_AXI_awqos),
|
||||
.io_mem_axi_w_valid (S_AXI_wvalid),
|
||||
.io_mem_axi_w_ready (S_AXI_wready),
|
||||
.io_mem_axi_w_bits_strb (S_AXI_wstrb),
|
||||
.io_mem_axi_w_bits_data (S_AXI_wdata),
|
||||
.io_mem_axi_w_bits_last (S_AXI_wlast),
|
||||
.io_mem_axi_b_valid (S_AXI_bvalid),
|
||||
.io_mem_axi_b_ready (S_AXI_bready),
|
||||
.io_mem_axi_b_bits_resp (S_AXI_bresp),
|
||||
.io_mem_axi_b_bits_id (S_AXI_bid),
|
||||
.io_mem_axi_r_valid (S_AXI_rvalid),
|
||||
.io_mem_axi_r_ready (S_AXI_rready),
|
||||
.io_mem_axi_r_bits_resp (S_AXI_rresp),
|
||||
.io_mem_axi_r_bits_id (S_AXI_rid),
|
||||
.io_mem_axi_r_bits_data (S_AXI_rdata),
|
||||
.io_mem_axi_r_bits_last (S_AXI_rlast),
|
||||
|
||||
///////////modified///////////
|
||||
.io_mmio_axi_aw_ready(io_mmio_axi_aw_ready),
|
||||
.io_mmio_axi_aw_valid(io_mmio_axi_aw_valid),
|
||||
.io_mmio_axi_aw_bits_id(io_mmio_axi_aw_bits_id),
|
||||
.io_mmio_axi_aw_bits_addr(io_mmio_axi_aw_bits_addr),
|
||||
.io_mmio_axi_aw_bits_len(io_mmio_axi_aw_bits_len),
|
||||
.io_mmio_axi_aw_bits_size(io_mmio_axi_aw_bits_size),
|
||||
.io_mmio_axi_aw_bits_burst(io_mmio_axi_aw_bits_burst),
|
||||
.io_mmio_axi_aw_bits_lock(io_mmio_axi_aw_bits_lock),
|
||||
.io_mmio_axi_aw_bits_cache(io_mmio_axi_aw_bits_cache),
|
||||
.io_mmio_axi_aw_bits_prot(io_mmio_axi_aw_bits_prot),
|
||||
.io_mmio_axi_aw_bits_qos(io_mmio_axi_aw_bits_qos),
|
||||
.io_mmio_axi_w_ready(io_mmio_axi_w_ready),
|
||||
.io_mmio_axi_w_valid(io_mmio_axi_w_valid),
|
||||
.io_mmio_axi_w_bits_data(io_mmio_axi_w_bits_data),
|
||||
.io_mmio_axi_w_bits_strb(io_mmio_axi_w_bits_strb),
|
||||
.io_mmio_axi_w_bits_last(io_mmio_axi_w_bits_last),
|
||||
.io_mmio_axi_b_ready(io_mmio_axi_b_ready),
|
||||
.io_mmio_axi_b_valid(io_mmio_axi_b_valid),
|
||||
.io_mmio_axi_b_bits_id(io_mmio_axi_b_bits_id),
|
||||
.io_mmio_axi_b_bits_resp(io_mmio_axi_b_bits_resp),
|
||||
.io_mmio_axi_ar_ready(io_mmio_axi_ar_ready),
|
||||
.io_mmio_axi_ar_valid(io_mmio_axi_ar_valid),
|
||||
.io_mmio_axi_ar_bits_id(io_mmio_axi_ar_bits_id),
|
||||
.io_mmio_axi_ar_bits_addr(io_mmio_axi_ar_bits_addr),
|
||||
.io_mmio_axi_ar_bits_len(io_mmio_axi_ar_bits_len),
|
||||
.io_mmio_axi_ar_bits_size(io_mmio_axi_ar_bits_size),
|
||||
.io_mmio_axi_ar_bits_burst(io_mmio_axi_ar_bits_burst),
|
||||
.io_mmio_axi_ar_bits_lock(io_mmio_axi_ar_bits_lock),
|
||||
.io_mmio_axi_ar_bits_cache(io_mmio_axi_ar_bits_cache),
|
||||
.io_mmio_axi_ar_bits_prot(io_mmio_axi_ar_bits_prot),
|
||||
.io_mmio_axi_ar_bits_qos(io_mmio_axi_ar_bits_qos),
|
||||
.io_mmio_axi_r_ready(io_mmio_axi_r_ready),
|
||||
.io_mmio_axi_r_valid(io_mmio_axi_r_valid),
|
||||
.io_mmio_axi_r_bits_id(io_mmio_axi_r_bits_id),
|
||||
.io_mmio_axi_r_bits_data(io_mmio_axi_r_bits_data),
|
||||
.io_mmio_axi_r_bits_resp(io_mmio_axi_r_bits_resp),
|
||||
.io_mmio_axi_r_bits_last(io_mmio_axi_r_bits_last),
|
||||
|
||||
.io_interrupt_in(rocket_interrupts)
|
||||
);
|
||||
///////////modified///////////
|
||||
//`ifndef differential_clock
|
||||
// IBUFG ibufg_gclk (.I(clk), .O(gclk_i));
|
||||
//`else
|
||||
// IBUFDS #(.DIFF_TERM("TRUE"), .IBUF_LOW_PWR("TRUE"), .IOSTANDARD("DEFAULT")) clk_ibufds (.O(gclk_i), .I(SYSCLK_P), .IB(SYSCLK_N));
|
||||
//`endif
|
||||
// BUFG bufg_host_clk (.I(host_clk_i), .O(host_clk));
|
||||
|
||||
// MMCME2_BASE #(
|
||||
// .BANDWIDTH("OPTIMIZED"),
|
||||
// .CLKFBOUT_MULT_F(`RC_CLK_MULT),
|
||||
// .CLKFBOUT_PHASE(0.0),
|
||||
// .CLKIN1_PERIOD(`ZYNQ_CLK_PERIOD),
|
||||
// .CLKOUT1_DIVIDE(1),
|
||||
// .CLKOUT2_DIVIDE(1),
|
||||
// .CLKOUT3_DIVIDE(1),
|
||||
// .CLKOUT4_DIVIDE(1),
|
||||
// .CLKOUT5_DIVIDE(1),
|
||||
// .CLKOUT6_DIVIDE(1),
|
||||
// .CLKOUT0_DIVIDE_F(`RC_CLK_DIVIDE),
|
||||
// .CLKOUT0_DUTY_CYCLE(0.5),
|
||||
// .CLKOUT1_DUTY_CYCLE(0.5),
|
||||
// .CLKOUT2_DUTY_CYCLE(0.5),
|
||||
// .CLKOUT3_DUTY_CYCLE(0.5),
|
||||
// .CLKOUT4_DUTY_CYCLE(0.5),
|
||||
// .CLKOUT5_DUTY_CYCLE(0.5),
|
||||
// .CLKOUT6_DUTY_CYCLE(0.5),
|
||||
// .CLKOUT0_PHASE(0.0),
|
||||
// .CLKOUT1_PHASE(0.0),
|
||||
// .CLKOUT2_PHASE(0.0),
|
||||
// .CLKOUT3_PHASE(0.0),
|
||||
// .CLKOUT4_PHASE(0.0),
|
||||
// .CLKOUT5_PHASE(0.0),
|
||||
// .CLKOUT6_PHASE(0.0),
|
||||
// .CLKOUT4_CASCADE("FALSE"),
|
||||
// .DIVCLK_DIVIDE(1),
|
||||
// .REF_JITTER1(0.0),
|
||||
// .STARTUP_WAIT("FALSE")
|
||||
// ) MMCME2_BASE_inst (
|
||||
// .CLKOUT0(host_clk_i),
|
||||
// .CLKOUT0B(),
|
||||
// .CLKOUT1(),
|
||||
// .CLKOUT1B(),
|
||||
// .CLKOUT2(),
|
||||
// .CLKOUT2B(),
|
||||
// .CLKOUT3(),
|
||||
// .CLKOUT3B(),
|
||||
// .CLKOUT4(),
|
||||
// .CLKOUT5(),
|
||||
// .CLKOUT6(),
|
||||
// .CLKFBOUT(gclk_fbout),
|
||||
// .CLKFBOUTB(),
|
||||
// .LOCKED(mmcm_locked),
|
||||
// .CLKIN1(gclk_i),
|
||||
// .PWRDWN(1'b0),
|
||||
// .RST(1'b0),
|
||||
// .CLKFBIN(gclk_fbout));
|
||||
|
||||
Car_Driver_Int car_driver(
|
||||
.clk_in(host_clk),
|
||||
.CtrlSig(gpio_out),
|
||||
.clk_out(clk_out),
|
||||
.DIR_serial(DIR_serial),
|
||||
.DIR_enable(DIR_enable),
|
||||
.DIR_latch(DIR_latch)
|
||||
);
|
||||
|
||||
|
||||
endmodule
|
||||
|
||||
|
||||
|
||||
|
||||
module Car_Driver_Int (
|
||||
input clk_in,
|
||||
input [7:0] CtrlSig,
|
||||
output reg clk_out,
|
||||
output reg DIR_serial,
|
||||
output reg DIR_enable,
|
||||
output reg DIR_latch
|
||||
);
|
||||
|
||||
parameter ST0 = 0, ST1 = 1, ST2 = 2, ST3 = 3, ST4 = 4, ST5 = 5, ST6 = 6, ST7 = 7, ST8 = 8;
|
||||
reg [3: 0] p_state = ST8;
|
||||
reg [7:0] buff = 0;
|
||||
|
||||
initial begin
|
||||
clk_out = 1'b0;
|
||||
end
|
||||
|
||||
always @ (posedge clk_in) begin //2鍒嗛
|
||||
clk_out <= ~clk_out;
|
||||
end
|
||||
|
||||
always @ (negedge clk_out)
|
||||
case (p_state)
|
||||
ST0:
|
||||
begin
|
||||
buff <= CtrlSig;
|
||||
p_state <= ST1;
|
||||
DIR_serial <= CtrlSig[0];
|
||||
DIR_enable <= 1;
|
||||
DIR_latch <= 0;
|
||||
end
|
||||
ST1:
|
||||
begin
|
||||
p_state <= ST2;
|
||||
DIR_serial <= CtrlSig[1];
|
||||
DIR_enable <= 1;
|
||||
DIR_latch <= 0;
|
||||
end
|
||||
ST2:
|
||||
begin
|
||||
p_state <= ST3;
|
||||
DIR_serial <= CtrlSig[2];
|
||||
DIR_enable <= 1;
|
||||
DIR_latch <= 0;
|
||||
end
|
||||
ST3:
|
||||
begin
|
||||
p_state <= ST4;
|
||||
DIR_serial <= CtrlSig[3];
|
||||
DIR_enable <= 1;
|
||||
DIR_latch <= 0;
|
||||
end
|
||||
ST4:
|
||||
begin
|
||||
p_state <= ST5;
|
||||
DIR_serial <= CtrlSig[4];
|
||||
DIR_enable <= 1;
|
||||
DIR_latch <= 0;
|
||||
end
|
||||
ST5:
|
||||
begin
|
||||
p_state <= ST6;
|
||||
DIR_serial <= CtrlSig[5];
|
||||
DIR_enable <= 1;
|
||||
DIR_latch <= 0;
|
||||
end
|
||||
ST6:
|
||||
begin
|
||||
p_state <= ST7;
|
||||
DIR_serial <= CtrlSig[6];
|
||||
DIR_enable <= 1;
|
||||
DIR_latch <= 0;
|
||||
end
|
||||
ST7:
|
||||
begin
|
||||
p_state <= ST8;
|
||||
DIR_serial <= CtrlSig[7];
|
||||
DIR_enable <= 1;
|
||||
DIR_latch <= 0;
|
||||
end
|
||||
ST8:
|
||||
begin
|
||||
p_state = !(CtrlSig ^ buff) ? ST8 : ST0;
|
||||
DIR_serial <= CtrlSig[7];
|
||||
DIR_enable <= 0;
|
||||
DIR_latch <= 1;
|
||||
end
|
||||
default:
|
||||
begin
|
||||
p_state <= ST8;
|
||||
end
|
||||
endcase
|
||||
endmodule
|
Loading…
Reference in New Issue