Skip to content

Instantly share code, notes, and snippets.

@shohei
Last active July 30, 2018 08:07
Show Gist options
  • Save shohei/760fc0e2aff55d0463d2bd42b7efdc43 to your computer and use it in GitHub Desktop.
Save shohei/760fc0e2aff55d0463d2bd42b7efdc43 to your computer and use it in GitHub Desktop.
PYNQ double UART
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: Xilinx Inc
// Design Name: PYNQ
// Module Name: top
// Project Name: PYNQ
// Target Devices: ZC7020
// Tool Versions: 2016.1
// Description:
//////////////////////////////////////////////////////////////////////////////////
module top(
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,
Vaux0_v_n,
Vaux0_v_p,
Vaux12_v_n,
Vaux12_v_p,
Vaux8_v_n,
Vaux8_v_p,
Vaux13_v_n,
Vaux13_v_p,
Vaux15_v_n,
Vaux15_v_p,
Vaux1_v_n,
Vaux1_v_p,
Vaux5_v_n,
Vaux5_v_p,
Vaux6_v_n,
Vaux6_v_p,
Vaux9_v_n,
Vaux9_v_p,
Vp_Vn_v_n,
Vp_Vn_v_p,
btns_4bits_tri_i,
gpio_shield_sw_a5_a0_d13_d0_tri_io,
ck_an_tri_io,
ck_gpio_tri_io,
hdmi_in_clk_n,
hdmi_in_clk_p,
hdmi_in_data_n,
hdmi_in_data_p,
hdmi_in_ddc_scl_io,
hdmi_in_ddc_sda_io,
hdmi_in_hpd,
hdmi_out_clk_n,
hdmi_out_clk_p,
hdmi_out_data_n,
hdmi_out_data_p,
hdmi_out_ddc_scl_io,
hdmi_out_ddc_sda_io,
hdmi_out_hpd,
iic_sw_shield_scl_io,
iic_sw_shield_sda_io,
leds_4bits_tri_o,
spi_sw_shield_io0_io,
spi_sw_shield_io1_io,
spi_sw_shield_sck_io,
spi_sw_shield_ss_io,
pmodJA,
pmodJB,
pdm_audio_shutdown,
pdm_m_clk,
pdm_m_data_i,
pwm_audio_o,
rgbleds_6bits_tri_o,
sws_2bits_tri_i,
uart_rtl_0_rxd,
uart_rtl_0_txd);
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;
input Vaux0_v_n;
input Vaux0_v_p;
input Vaux12_v_n;
input Vaux12_v_p;
input Vaux8_v_n;
input Vaux8_v_p;
input Vaux13_v_n;
input Vaux13_v_p;
input Vaux15_v_n;
input Vaux15_v_p;
input Vaux1_v_n;
input Vaux1_v_p;
input Vaux5_v_n;
input Vaux5_v_p;
input Vaux6_v_n;
input Vaux6_v_p;
input Vaux9_v_n;
input Vaux9_v_p;
input Vp_Vn_v_n;
input Vp_Vn_v_p;
input [3:0]btns_4bits_tri_i;
inout [19:0]gpio_shield_sw_a5_a0_d13_d0_tri_io;
inout [5:0]ck_an_tri_io;
inout [13:0]ck_gpio_tri_io;
input hdmi_in_clk_n;
input hdmi_in_clk_p;
input [2:0]hdmi_in_data_n;
input [2:0]hdmi_in_data_p;
inout hdmi_in_ddc_scl_io;
inout hdmi_in_ddc_sda_io;
output [0:0]hdmi_in_hpd;
output hdmi_out_clk_n;
output hdmi_out_clk_p;
output [2:0]hdmi_out_data_n;
output [2:0]hdmi_out_data_p;
inout hdmi_out_ddc_scl_io;
inout hdmi_out_ddc_sda_io;
output [0:0]hdmi_out_hpd;
inout iic_sw_shield_scl_io;
inout iic_sw_shield_sda_io;
output [3:0]leds_4bits_tri_o;
input [1:0]sws_2bits_tri_i;
inout spi_sw_shield_io0_io;
inout spi_sw_shield_io1_io;
inout spi_sw_shield_sck_io;
inout spi_sw_shield_ss_io;
inout [7:0]pmodJA;
inout [7:0]pmodJB;
output [0:0]pdm_audio_shutdown;
output [0:0]pdm_m_clk;
input pdm_m_data_i;
output [5:0]rgbleds_6bits_tri_o;
output [0:0]pwm_audio_o;
input uart_rtl_0_rxd;
output uart_rtl_0_txd;
wire [14:0]DDR_addr;
wire [2:0]DDR_ba;
wire DDR_cas_n;
wire DDR_ck_n;
wire DDR_ck_p;
wire DDR_cke;
wire DDR_cs_n;
wire [3:0]DDR_dm;
wire [31:0]DDR_dq;
wire [3:0]DDR_dqs_n;
wire [3:0]DDR_dqs_p;
wire DDR_odt;
wire DDR_ras_n;
wire DDR_reset_n;
wire DDR_we_n;
wire FIXED_IO_ddr_vrn;
wire FIXED_IO_ddr_vrp;
wire [53:0]FIXED_IO_mio;
wire FIXED_IO_ps_clk;
wire FIXED_IO_ps_porb;
wire FIXED_IO_ps_srstb;
wire Vaux0_v_n;
wire Vaux0_v_p;
wire Vaux12_v_n;
wire Vaux12_v_p;
wire Vaux8_v_n;
wire Vaux8_v_p;
wire Vaux13_v_n;
wire Vaux13_v_p;
wire Vaux15_v_n;
wire Vaux15_v_p;
wire Vaux1_v_n;
wire Vaux1_v_p;
wire Vaux5_v_n;
wire Vaux5_v_p;
wire Vaux6_v_n;
wire Vaux6_v_p;
wire Vaux9_v_n;
wire Vaux9_v_p;
wire Vp_Vn_v_n;
wire Vp_Vn_v_p;
wire [3:0]btns_4bits_tri_i;
wire [19:0]gpio_shield_sw_a5_a0_d13_d0_tri_io;
wire [13:0]ck_gpio_tri_i;
wire [13:0]ck_gpio_tri_io;
wire [13:0]ck_gpio_tri_o;
wire [13:0]ck_gpio_tri_t;
wire hdmi_in_clk_n;
wire hdmi_in_clk_p;
wire [2:0]hdmi_in_data_n;
wire [2:0]hdmi_in_data_p;
wire hdmi_in_ddc_scl_i;
wire hdmi_in_ddc_scl_io;
wire hdmi_in_ddc_scl_o;
wire hdmi_in_ddc_scl_t;
wire hdmi_in_ddc_sda_i;
wire hdmi_in_ddc_sda_io;
wire hdmi_in_ddc_sda_o;
wire hdmi_in_ddc_sda_t;
wire [0:0]hdmi_in_hpd;
wire hdmi_out_clk_n;
wire hdmi_out_clk_p;
wire [2:0]hdmi_out_data_n;
wire [2:0]hdmi_out_data_p;
wire hdmi_out_ddc_scl_i;
wire hdmi_out_ddc_scl_io;
wire hdmi_out_ddc_scl_o;
wire hdmi_out_ddc_scl_t;
wire hdmi_out_ddc_sda_i;
wire hdmi_out_ddc_sda_io;
wire hdmi_out_ddc_sda_o;
wire hdmi_out_ddc_sda_t;
wire [0:0]hdmi_out_hpd;
wire shield2sw_scl_i_in;
wire shield2sw_sda_i_in;
wire sw2shield_scl_o_out;
wire sw2shield_scl_t_out;
wire sw2shield_sda_o_out;
wire sw2shield_sda_t_out;
wire iic_sw_shield_scl_io;
wire iic_sw_shield_sda_io;
wire [3:0]leds_4bits_tri_o;
wire [7:0]pmodJA_data_in;
wire [7:0]pmodJA_data_out;
wire [7:0]pmodJA_tri_out;
wire [7:0]pmodJB_data_in;
wire [7:0]pmodJB_data_out;
wire [7:0]pmodJB_tri_out;
wire spi_sw_shield_io0_i;
wire spi_sw_shield_io0_io;
wire spi_sw_shield_io0_o;
wire spi_sw_shield_io0_t;
wire spi_sw_shield_io1_i;
wire spi_sw_shield_io1_io;
wire spi_sw_shield_io1_o;
wire spi_sw_shield_io1_t;
wire spi_sw_shield_sck_i;
wire spi_sw_shield_sck_io;
wire spi_sw_shield_sck_o;
wire spi_sw_shield_sck_t;
wire spi_sw_shield_ss_i;
wire spi_sw_shield_ss_io;
wire spi_sw_shield_ss_o;
wire spi_sw_shield_ss_t;
wire [1:0]sws_2bits_tri_i;
wire [7:0]pmodJA;
wire [7:0]pmodJB;
wire [0:0]pdm_audio_shutdown;
wire [0:0]pdm_m_clk;
wire pdm_m_data_i;
wire [5:0]rgbleds_6bits_tri_o;
wire [0:0]pwm_audio_o;
wire [19:0]shield2sw_data_i;
wire [19:0]sw2shield_data_o;
wire [19:0]sw2shield_tri_o;
wire uart_rtl_0_rxd;
wire uart_rtl_0_txd;
// ChipKit related header signals
genvar i;
generate
for (i=0; i < 14; i=i+1)
begin: ck_gpio_iobuf
IOBUF ck_gpio_tri_iobuf_i(
.I(ck_gpio_tri_o[i]),
.IO(ck_gpio_tri_io[i]),
.O(ck_gpio_tri_i[i]),
.T(ck_gpio_tri_t[i])
);
end
endgenerate
// for HDMI in
IOBUF hdmi_in_ddc_scl_iobuf
(.I(hdmi_in_ddc_scl_o),
.IO(hdmi_in_ddc_scl_io),
.O(hdmi_in_ddc_scl_i),
.T(hdmi_in_ddc_scl_t));
IOBUF hdmi_in_ddc_sda_iobuf
(.I(hdmi_in_ddc_sda_o),
.IO(hdmi_in_ddc_sda_io),
.O(hdmi_in_ddc_sda_i),
.T(hdmi_in_ddc_sda_t));
// for HDMI out
IOBUF hdmi_out_ddc_scl_iobuf
(.I(hdmi_out_ddc_scl_o),
.IO(hdmi_out_ddc_scl_io),
.O(hdmi_out_ddc_scl_i),
.T(hdmi_out_ddc_scl_t));
IOBUF hdmi_out_ddc_sda_iobuf
(.I(hdmi_out_ddc_sda_o),
.IO(hdmi_out_ddc_sda_io),
.O(hdmi_out_ddc_sda_i),
.T(hdmi_out_ddc_sda_t));
// pmodJB related iobufs
generate
for (i=0; i < 8; i=i+1)
begin: pmodJB_iobuf
IOBUF pmodJB_data_iobuf_i(
.I(pmodJB_data_out[i]),
.IO(pmodJB[i]),
.O(pmodJB_data_in[i]),
.T(pmodJB_tri_out[i])
);
end
endgenerate
// pmodJA related iobufs
generate
for (i=0; i < 8; i=i+1)
begin: pmodJA_iobuf
IOBUF pmodJA_data_iobuf_i(
.I(pmodJA_data_out[i]),
.IO(pmodJA[i]),
.O(pmodJA_data_in[i]),
.T(pmodJA_tri_out[i])
);
end
endgenerate
// Arduino shield related iobufs
generate
for (i=0; i < 20; i=i+1)
begin: gpio_shield_sw_a5_a0_iobuf
IOBUF gpio_shield_sw_a5_a0_d13_d0_iobuf_i(
.I(sw2shield_data_o[i]),
.IO(gpio_shield_sw_a5_a0_d13_d0_tri_io[i]),
.O(shield2sw_data_i[i]),
.T(sw2shield_tri_o[i])
);
end
endgenerate
// Dedicated Arduino IIC shield2sw_scl_i_in
IOBUF iic_sw_shield_scl_iobuf
(.I(sw2shield_scl_o_out),
.IO(iic_sw_shield_scl_io),
.O(shield2sw_scl_i_in),
.T(sw2shield_scl_t_out));
IOBUF iic_sw_shield_sda_iobuf
(.I(sw2shield_sda_o_out),
.IO(iic_sw_shield_sda_io),
.O(shield2sw_sda_i_in),
.T(sw2shield_sda_t_out));
// Dedicated Arduino SPI
IOBUF spi_sw_shield_io0_iobuf
(.I(spi_sw_shield_io0_o),
.IO(spi_sw_shield_io0_io),
.O(spi_sw_shield_io0_i),
.T(spi_sw_shield_io0_t));
IOBUF spi_sw_shield_io1_iobuf
(.I(spi_sw_shield_io1_o),
.IO(spi_sw_shield_io1_io),
.O(spi_sw_shield_io1_i),
.T(spi_sw_shield_io1_t));
IOBUF spi_sw_shield_sck_iobuf
(.I(spi_sw_shield_sck_o),
.IO(spi_sw_shield_sck_io),
.O(spi_sw_shield_sck_i),
.T(spi_sw_shield_sck_t));
IOBUF spi_sw_shield_ss_iobuf
(.I(spi_sw_shield_ss_o),
.IO(spi_sw_shield_ss_io),
.O(spi_sw_shield_ss_i),
.T(spi_sw_shield_ss_t));
system system_i
(.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),
.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),
.Vaux0_v_n(Vaux0_v_n),
.Vaux0_v_p(Vaux0_v_p),
.Vaux12_v_n(Vaux12_v_n),
.Vaux12_v_p(Vaux12_v_p),
.Vaux13_v_n(Vaux13_v_n),
.Vaux13_v_p(Vaux13_v_p),
.Vaux15_v_n(Vaux15_v_n),
.Vaux15_v_p(Vaux15_v_p),
.Vaux1_v_n(Vaux1_v_n),
.Vaux1_v_p(Vaux1_v_p),
.Vaux5_v_n(Vaux5_v_n),
.Vaux5_v_p(Vaux5_v_p),
.Vaux6_v_n(Vaux6_v_n),
.Vaux6_v_p(Vaux6_v_p),
.Vaux8_v_n(Vaux8_v_n),
.Vaux8_v_p(Vaux8_v_p),
.Vaux9_v_n(Vaux9_v_n),
.Vaux9_v_p(Vaux9_v_p),
.Vp_Vn_v_n(Vp_Vn_v_n),
.Vp_Vn_v_p(Vp_Vn_v_p),
.btns_4bits_tri_i(btns_4bits_tri_i),
.ck_gpio_tri_i({ck_gpio_tri_i[13],ck_gpio_tri_i[12],ck_gpio_tri_i[11],ck_gpio_tri_i[10],ck_gpio_tri_i[9],ck_gpio_tri_i[8],ck_gpio_tri_i[7],ck_gpio_tri_i[6],ck_gpio_tri_i[5],ck_gpio_tri_i[4],ck_gpio_tri_i[3],ck_gpio_tri_i[2],ck_gpio_tri_i[1],ck_gpio_tri_i[0]}),
.ck_gpio_tri_o({ck_gpio_tri_o[13],ck_gpio_tri_o[12],ck_gpio_tri_o[11],ck_gpio_tri_o[10],ck_gpio_tri_o[9],ck_gpio_tri_o[8],ck_gpio_tri_o[7],ck_gpio_tri_o[6],ck_gpio_tri_o[5],ck_gpio_tri_o[4],ck_gpio_tri_o[3],ck_gpio_tri_o[2],ck_gpio_tri_o[1],ck_gpio_tri_o[0]}),
.ck_gpio_tri_t({ck_gpio_tri_t[13],ck_gpio_tri_t[12],ck_gpio_tri_t[11],ck_gpio_tri_t[10],ck_gpio_tri_t[9],ck_gpio_tri_t[8],ck_gpio_tri_t[7],ck_gpio_tri_t[6],ck_gpio_tri_t[5],ck_gpio_tri_t[4],ck_gpio_tri_t[3],ck_gpio_tri_t[2],ck_gpio_tri_t[1],ck_gpio_tri_t[0]}),
.hdmi_in_clk_n(hdmi_in_clk_n),
.hdmi_in_clk_p(hdmi_in_clk_p),
.hdmi_in_data_n(hdmi_in_data_n),
.hdmi_in_data_p(hdmi_in_data_p),
.hdmi_in_ddc_scl_i(hdmi_in_ddc_scl_i),
.hdmi_in_ddc_scl_o(hdmi_in_ddc_scl_o),
.hdmi_in_ddc_scl_t(hdmi_in_ddc_scl_t),
.hdmi_in_ddc_sda_i(hdmi_in_ddc_sda_i),
.hdmi_in_ddc_sda_o(hdmi_in_ddc_sda_o),
.hdmi_in_ddc_sda_t(hdmi_in_ddc_sda_t),
.hdmi_in_hpd(hdmi_in_hpd),
.hdmi_out_clk_n(hdmi_out_clk_n),
.hdmi_out_clk_p(hdmi_out_clk_p),
.hdmi_out_data_n(hdmi_out_data_n),
.hdmi_out_data_p(hdmi_out_data_p),
.hdmi_out_ddc_scl_i(hdmi_out_ddc_scl_i),
.hdmi_out_ddc_scl_o(hdmi_out_ddc_scl_o),
.hdmi_out_ddc_scl_t(hdmi_out_ddc_scl_t),
.hdmi_out_ddc_sda_i(hdmi_out_ddc_sda_i),
.hdmi_out_ddc_sda_o(hdmi_out_ddc_sda_o),
.hdmi_out_ddc_sda_t(hdmi_out_ddc_sda_t),
.hdmi_out_hpd(hdmi_out_hpd),
.leds_4bits_tri_o(leds_4bits_tri_o),
.pdm_audio_shutdown(pdm_audio_shutdown),
.pdm_m_clk(pdm_m_clk),
.pdm_m_data_i(pdm_m_data_i),
.pmodJA_data_in(pmodJA_data_in),
.pmodJA_data_out(pmodJA_data_out),
.pmodJA_tri_out(pmodJA_tri_out),
.pmodJB_data_in(pmodJB_data_in),
.pmodJB_data_out(pmodJB_data_out),
.pmodJB_tri_out(pmodJB_tri_out),
.pwm_audio_o(pwm_audio_o),
.rgbleds_6bits_tri_o(rgbleds_6bits_tri_o),
.shield2sw_scl_i_in(shield2sw_scl_i_in),
.shield2sw_sda_i_in(shield2sw_sda_i_in),
.spi_sw_shield_io0_i(spi_sw_shield_io0_i),
.spi_sw_shield_io0_o(spi_sw_shield_io0_o),
.spi_sw_shield_io0_t(spi_sw_shield_io0_t),
.spi_sw_shield_io1_i(spi_sw_shield_io1_i),
.spi_sw_shield_io1_o(spi_sw_shield_io1_o),
.spi_sw_shield_io1_t(spi_sw_shield_io1_t),
.spi_sw_shield_sck_i(spi_sw_shield_sck_i),
.spi_sw_shield_sck_o(spi_sw_shield_sck_o),
.spi_sw_shield_sck_t(spi_sw_shield_sck_t),
.spi_sw_shield_ss_i(spi_sw_shield_ss_i),
.spi_sw_shield_ss_o(spi_sw_shield_ss_o),
.spi_sw_shield_ss_t(spi_sw_shield_ss_t),
.sw2shield_scl_o_out(sw2shield_scl_o_out),
.sw2shield_scl_t_out(sw2shield_scl_t_out),
.sw2shield_sda_o_out(sw2shield_sda_o_out),
.sw2shield_sda_t_out(sw2shield_sda_t_out),
.shield2sw_data_i(shield2sw_data_i),
.sw2shield_data_o(sw2shield_data_o),
.sw2shield_tri_o(sw2shield_tri_o),
.sws_2bits_tri_i(sws_2bits_tri_i),
.uart_rtl_0_rxd(uart_rtl_0_rxd),
.uart_rtl_0_txd(uart_rtl_0_txd));
endmodule
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment