Advertisement
Guest User

Untitled

a guest
Mar 27th, 2015
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VeriLog 26.93 KB | None | 0 0
  1. //////////////////////////////////////////////////////////////////////
  2. //
  3. // ORPSoC top for de0_nano board
  4. //
  5. // Instantiates modules, depending on ORPSoC defines file
  6. //
  7. // Copyright (C) 2013 Stefan Kristiansson
  8. //
  9. // Based on de1 board by
  10. // Franck Jullien, [email protected]
  11. // Which probably was based on the or1200-generic board by
  12. // Olof Kindgren, which in turn was based on orpsocv2 boards by
  13. // Julius Baxter.
  14. //
  15. //////////////////////////////////////////////////////////////////////
  16. //
  17. // This source file may be used and distributed without
  18. // restriction provided that this copyright statement is not
  19. // removed from the file and that any derivative work contains
  20. // the original copyright notice and the associated disclaimer.
  21. //
  22. // This source file is free software; you can redistribute it
  23. // and/or modify it under the terms of the GNU Lesser General
  24. // Public License as published by the Free Software Foundation;
  25. // either version 2.1 of the License, or (at your option) any
  26. // later version.
  27. //
  28. // This source is distributed in the hope that it will be
  29. // useful, but WITHOUT ANY WARRANTY; without even the implied
  30. // warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  31. // PURPOSE.  See the GNU Lesser General Public License for more
  32. // details.
  33. //
  34. // You should have received a copy of the GNU Lesser General
  35. // Public License along with this source; if not, download it
  36. // from http://www.opencores.org/lgpl.shtml
  37. //
  38. //////////////////////////////////////////////////////////////////////
  39.  
  40. `include "orpsoc-defines.v"
  41.  
  42. module orpsoc_top #(
  43.     parameter   uart0_aw = 3,
  44.         parameter       HV1_SADR = 8'h45,
  45.         parameter       i2c0_wb_adr_width = 3,
  46.         parameter       i2c1_wb_adr_width = 3
  47. )(
  48.     input       sys_clk_pad_i,
  49.     input       rst_n_pad_i,
  50.  
  51. `ifdef SIM
  52.     output      tdo_pad_o,
  53.     input       tms_pad_i,
  54.     input       tck_pad_i,
  55.     input       tdi_pad_i,
  56. `endif
  57.  
  58.     output  [1:0]   sdram_ba_pad_o,
  59.     output  [12:0]  sdram_a_pad_o,
  60.     output      sdram_cs_n_pad_o,
  61.     output      sdram_ras_pad_o,
  62.     output      sdram_cas_pad_o,
  63.     output      sdram_we_pad_o,
  64.     inout   [15:0]  sdram_dq_pad_io,
  65.     output  [1:0]   sdram_dqm_pad_o,
  66.     output      sdram_cke_pad_o,
  67.     output      sdram_clk_pad_o,
  68.  
  69.     input       uart0_srx_pad_i,
  70.     output      uart0_stx_pad_o,
  71.  
  72.     inout   [7:0]   gpio0_io,
  73.     input   [3:0]   gpio1_i,
  74.  
  75. `ifdef I2C0
  76.     inout       i2c0_sda_io,
  77.     inout       i2c0_scl_io,
  78. `endif
  79. `ifdef I2C1
  80.     inout       i2c1_sda_io,
  81.     inout       i2c1_scl_io,
  82. `endif
  83.  
  84. `ifdef SPI0
  85.     output          spi0_sck_o,
  86.     output          spi0_mosi_o,
  87.     input           spi0_miso_i,
  88.  `ifdef SPI0_SLAVE_SELECTS
  89.     output          spi0_ss_o,
  90.  `endif
  91. `endif
  92.  
  93. `ifdef SPI1
  94.     output          spi1_sck_o,
  95.     output          spi1_mosi_o,
  96.     input           spi1_miso_i,
  97.  `ifdef SPI1_SLAVE_SELECTS
  98.     output          spi1_ss_o,
  99.  `endif
  100. `endif
  101.  
  102. `ifdef SPI2
  103.     output          spi2_sck_o,
  104.     output          spi2_mosi_o,
  105.     input           spi2_miso_i,
  106.  `ifdef SPI2_SLAVE_SELECTS
  107.     output          spi2_ss_o,
  108.  `endif
  109. `endif
  110.     input   eth0_tx_clk_pad_i,
  111.     output  [3:0] eth0_tx_data_pad_o,
  112.     output  eth0_tx_en_pad_o,
  113.     input   eth0_rx_clk_pad_i,
  114.     input   [3:0] eth0_rx_data_pad_i,
  115.     input   eth0_rx_dv_pad_i,
  116.     input   eth0_rx_err_pad_i,
  117.     input   eth0_col_pad_i,
  118.     input   eth0_crs_pad_i,
  119.     output  eth0_mdc_pad_o,
  120.     inout   eth0_md_pad_io,
  121.     output  eth0_rst_n_pad_o,
  122.  
  123.     output          accelerometer_cs_o,
  124.     input           accelerometer_irq_i
  125. );
  126.  
  127. parameter   IDCODE_VALUE = 32'h14951185;
  128. wire wb_m2s_eth0_master_adr;
  129. wire wb_m2s_eth0_master_sel;
  130. wire wb_m2s_eth0_master_we;
  131. wire wb_m2s_eth0_master_dat;
  132. wire wb_m2s_eth0_master_cyc;
  133. wire wb_m2s_eth0_master_stb;
  134. wire wb_m2s_eth0_master_cti;
  135. wire wb_m2s_eth0_master_bte;
  136. wire wb_s2m_eth0_master_dat;
  137. wire wb_s2m_eth0_master_ack;
  138. wire wb_s2m_eth0_master_err;
  139.  
  140. // choose I2C operation mode
  141. assign accelerometer_cs_o = 1;
  142. ////////////////////////////////////////////////////////////////////////
  143. //
  144. // Clock and reset generation module
  145. //
  146. ////////////////////////////////////////////////////////////////////////
  147.  
  148. wire    async_rst;
  149. wire    wb_clk, wb_rst;
  150. wire    dbg_tck;
  151. wire    sdram_clk;
  152. wire    sdram_rst;
  153.  
  154. assign  sdram_clk_pad_o = sdram_clk;
  155.  
  156. clkgen clkgen0 (
  157.     .sys_clk_pad_i  (sys_clk_pad_i),
  158.     .rst_n_pad_i    (rst_n_pad_i),
  159.     .async_rst_o    (async_rst),
  160.     .wb_clk_o   (wb_clk),
  161.     .wb_rst_o   (wb_rst),
  162. `ifdef SIM
  163.     .tck_pad_i  (tck_pad_i),
  164.     .dbg_tck_o  (dbg_tck),
  165. `endif
  166.     .sdram_clk_o    (sdram_clk),
  167.     .sdram_rst_o    (sdram_rst)
  168. );
  169.  
  170. ////////////////////////////////////////////////////////////////////////
  171. //
  172. // Modules interconnections
  173. //
  174. ////////////////////////////////////////////////////////////////////////
  175. `include "wb_intercon_dbg.vh"
  176. `include "wb_intercon.vh"
  177.  
  178. `ifdef SIM
  179. ////////////////////////////////////////////////////////////////////////
  180. //
  181. // GENERIC JTAG TAP
  182. //
  183. ////////////////////////////////////////////////////////////////////////
  184.  
  185. wire    dbg_if_select;
  186. wire    dbg_if_tdo;
  187. wire    jtag_tap_tdo;
  188. wire    jtag_tap_shift_dr;
  189. wire    jtag_tap_pause_dr;
  190. wire    jtag_tap_update_dr;
  191. wire    jtag_tap_capture_dr;
  192.  
  193. tap_top jtag_tap0 (
  194.     .tdo_pad_o          (tdo_pad_o),
  195.     .tms_pad_i          (tms_pad_i),
  196.     .tck_pad_i          (dbg_tck),
  197.     .trst_pad_i         (async_rst),
  198.     .tdi_pad_i          (tdi_pad_i),
  199.  
  200.     .tdo_padoe_o            (tdo_padoe_o),
  201.  
  202.     .tdo_o              (jtag_tap_tdo),
  203.  
  204.     .shift_dr_o         (jtag_tap_shift_dr),
  205.     .pause_dr_o         (jtag_tap_pause_dr),
  206.     .update_dr_o            (jtag_tap_update_dr),
  207.     .capture_dr_o           (jtag_tap_capture_dr),
  208.  
  209.     .extest_select_o        (),
  210.     .sample_preload_select_o    (),
  211.     .mbist_select_o         (),
  212.     .debug_select_o         (dbg_if_select),
  213.  
  214.  
  215.     .bs_chain_tdi_i         (1'b0),
  216.     .mbist_tdi_i            (1'b0),
  217.     .debug_tdi_i            (dbg_if_tdo)
  218. );
  219.  
  220. `elsif ALTERA_JTAG_TAP
  221. ////////////////////////////////////////////////////////////////////////
  222. //
  223. // ALTERA Virtual JTAG TAP
  224. //
  225. ////////////////////////////////////////////////////////////////////////
  226.  
  227. wire    dbg_if_select;
  228. wire    dbg_if_tdo;
  229. wire    jtag_tap_tdo;
  230. wire    jtag_tap_shift_dr;
  231. wire    jtag_tap_pause_dr;
  232. wire    jtag_tap_update_dr;
  233. wire    jtag_tap_capture_dr;
  234.  
  235. altera_virtual_jtag jtag_tap0 (
  236.     .tck_o          (dbg_tck),
  237.     .debug_tdo_i        (dbg_if_tdo),
  238.     .tdi_o          (jtag_tap_tdo),
  239.     .test_logic_reset_o (),
  240.     .run_test_idle_o    (),
  241.     .shift_dr_o     (jtag_tap_shift_dr),
  242.     .capture_dr_o       (jtag_tap_capture_dr),
  243.     .pause_dr_o     (jtag_tap_pause_dr),
  244.     .update_dr_o        (jtag_tap_update_dr),
  245.     .debug_select_o     (dbg_if_select)
  246. );
  247. `endif
  248. `define ETH_WISHBONE_B3
  249. wire    eth0_irq;
  250. // Management interface wires
  251. wire    eth0_md_i;
  252. wire    eth0_md_o;
  253. wire    eth0_md_oe;
  254. // Tristate control for management interface
  255. assign eth0_md_pad_io = eth0_md_oe ? eth0_md_o : 1'bz;
  256. assign eth0_md_i = eth0_md_pad_io;
  257. assign eth0_rst_n_pad_o = !wb_rst;
  258. ethmac ethmac0 (
  259. .wb_clk_i (wb_clk),
  260. .wb_rst_i (wb_rst),
  261. .wb_adr_i (wb_m2s_eth0_adr[11:2]),
  262. .wb_dat_i (wb_m2s_eth0_dat),
  263. .wb_sel_i (wb_m2s_eth0_sel),
  264. .wb_we_i (wb_m2s_eth0_we),
  265. .wb_cyc_i (wb_m2s_eth0_cyc),
  266. .wb_stb_i (wb_m2s_eth0_stb),
  267. .wb_dat_o (wb_s2m_eth0_dat),
  268. .wb_err_o (wb_s2m_eth0_err),
  269. .wb_ack_o (wb_s2m_eth0_ack),
  270. .m_wb_adr_o (wb_m2s_eth0_master_adr),
  271. .m_wb_sel_o (wb_m2s_eth0_master_sel),
  272. .m_wb_we_o (wb_m2s_eth0_master_we),
  273. .m_wb_dat_o (wb_m2s_eth0_master_dat),
  274. .m_wb_cyc_o (wb_m2s_eth0_master_cyc),
  275. .m_wb_stb_o (wb_m2s_eth0_master_stb),
  276. .m_wb_cti_o (wb_m2s_eth0_master_cti),
  277. .m_wb_bte_o (wb_m2s_eth0_master_bte),
  278. .m_wb_dat_i (wb_s2m_eth0_master_dat),
  279. .m_wb_ack_i (wb_s2m_eth0_master_ack),
  280. .m_wb_err_i (wb_s2m_eth0_master_err),
  281. // Ethernet MII interface
  282. // Transmit
  283. .mtxd_pad_o (eth0_tx_data_pad_o),
  284. .mtxen_pad_o (eth0_tx_en_pad_o),
  285. .mtxerr_pad_o (),
  286. .mtx_clk_pad_i (eth0_tx_clk_pad_i),
  287. // Receive
  288. .mrx_clk_pad_i (eth0_rx_clk_pad_i),
  289. .mrxd_pad_i (eth0_rx_data_pad_i),
  290. .mrxdv_pad_i (eth0_rx_dv_pad_i),
  291. .mrxerr_pad_i (eth0_rx_err_pad_i),
  292. .mcoll_pad_i (eth0_col_pad_i),
  293. .mcrs_pad_i (eth0_crs_pad_i),
  294. // Management interface
  295. .md_pad_i (eth0_md_i),
  296. .mdc_pad_o (eth0_mdc_pad_o),
  297. .md_pad_o (eth0_md_o),
  298. .md_padoe_o (eth0_md_oe),
  299. // Processor interrupt
  300. .int_o (eth0_irq)
  301. );
  302. ////////////////////////////////////////////////////////////////////////
  303. //
  304. // OR1K CPU
  305. //
  306. ////////////////////////////////////////////////////////////////////////
  307.  
  308. wire    [31:0]  or1k_irq;
  309.  
  310. wire    [31:0]  or1k_dbg_dat_i;
  311. wire    [31:0]  or1k_dbg_adr_i;
  312. wire        or1k_dbg_we_i;
  313. wire        or1k_dbg_stb_i;
  314. wire        or1k_dbg_ack_o;
  315. wire    [31:0]  or1k_dbg_dat_o;
  316.  
  317. wire        or1k_dbg_stall_i;
  318. wire        or1k_dbg_ewt_i;
  319. wire    [3:0]   or1k_dbg_lss_o;
  320. wire    [1:0]   or1k_dbg_is_o;
  321. wire    [10:0]  or1k_dbg_wp_o;
  322. wire        or1k_dbg_bp_o;
  323. wire        or1k_dbg_rst;
  324.  
  325. wire        sig_tick;
  326. wire        or1k_rst;
  327.  
  328. assign or1k_rst = wb_rst | or1k_dbg_rst;
  329.  
  330. `ifdef OR1200
  331.  
  332. or1200_top #(.boot_adr(32'hf0000100))
  333. or1200_top0 (
  334.     // Instruction bus, clocks, reset
  335.     .iwb_clk_i          (wb_clk),
  336.     .iwb_rst_i          (wb_rst),
  337.     .iwb_ack_i          (wb_s2m_or1k_i_ack),
  338.     .iwb_err_i          (wb_s2m_or1k_i_err),
  339.     .iwb_rty_i          (wb_s2m_or1k_i_rty),
  340.     .iwb_dat_i          (wb_s2m_or1k_i_dat),
  341.  
  342.     .iwb_cyc_o          (wb_m2s_or1k_i_cyc),
  343.     .iwb_adr_o          (wb_m2s_or1k_i_adr),
  344.     .iwb_stb_o          (wb_m2s_or1k_i_stb),
  345.     .iwb_we_o           (wb_m2s_or1k_i_we),
  346.     .iwb_sel_o          (wb_m2s_or1k_i_sel),
  347.     .iwb_dat_o          (wb_m2s_or1k_i_dat),
  348.     .iwb_cti_o          (wb_m2s_or1k_i_cti),
  349.     .iwb_bte_o          (wb_m2s_or1k_i_bte),
  350.  
  351.     // Data bus, clocks, reset
  352.     .dwb_clk_i          (wb_clk),
  353.     .dwb_rst_i          (wb_rst),
  354.     .dwb_ack_i          (wb_s2m_or1k_d_ack),
  355.     .dwb_err_i          (wb_s2m_or1k_d_err),
  356.     .dwb_rty_i          (wb_s2m_or1k_d_rty),
  357.     .dwb_dat_i          (wb_s2m_or1k_d_dat),
  358.  
  359.     .dwb_cyc_o          (wb_m2s_or1k_d_cyc),
  360.     .dwb_adr_o          (wb_m2s_or1k_d_adr),
  361.     .dwb_stb_o          (wb_m2s_or1k_d_stb),
  362.     .dwb_we_o           (wb_m2s_or1k_d_we),
  363.     .dwb_sel_o          (wb_m2s_or1k_d_sel),
  364.     .dwb_dat_o          (wb_m2s_or1k_d_dat),
  365.     .dwb_cti_o          (wb_m2s_or1k_d_cti),
  366.     .dwb_bte_o          (wb_m2s_or1k_d_bte),
  367.  
  368.     // Debug interface ports
  369.     .dbg_stall_i            (or1k_dbg_stall_i),
  370.     .dbg_ewt_i          (1'b0),
  371.     .dbg_lss_o          (or1k_dbg_lss_o),
  372.     .dbg_is_o           (or1k_dbg_is_o),
  373.     .dbg_wp_o           (or1k_dbg_wp_o),
  374.     .dbg_bp_o           (or1k_dbg_bp_o),
  375.  
  376.     .dbg_adr_i          (or1k_dbg_adr_i),
  377.     .dbg_we_i           (or1k_dbg_we_i),
  378.     .dbg_stb_i          (or1k_dbg_stb_i),
  379.     .dbg_dat_i          (or1k_dbg_dat_i),
  380.     .dbg_dat_o          (or1k_dbg_dat_o),
  381.     .dbg_ack_o          (or1k_dbg_ack_o),
  382.  
  383.     .pm_clksd_o         (),
  384.     .pm_dc_gate_o           (),
  385.     .pm_ic_gate_o           (),
  386.     .pm_dmmu_gate_o         (),
  387.     .pm_immu_gate_o         (),
  388.     .pm_tt_gate_o           (),
  389.     .pm_cpu_gate_o          (),
  390.     .pm_wakeup_o            (),
  391.     .pm_lvolt_o         (),
  392.  
  393.     // Core clocks, resets
  394.     .clk_i              (wb_clk),
  395.     .rst_i              (or1k_rst),
  396.  
  397.     .clmode_i           (2'b00),
  398.  
  399.     // Interrupts
  400.     .pic_ints_i         (or1k_irq),
  401.     .sig_tick           (sig_tick),
  402.  
  403.     .pm_cpustall_i          (1'b0)
  404. );
  405. `endif
  406.  
  407. `ifdef MOR1KX
  408. mor1kx #(
  409.     .FEATURE_DEBUGUNIT("ENABLED"),
  410.     .FEATURE_CMOV("ENABLED"),
  411.     .FEATURE_INSTRUCTIONCACHE("ENABLED"),
  412.     .OPTION_ICACHE_BLOCK_WIDTH(5),
  413.     .OPTION_ICACHE_SET_WIDTH(8),
  414.     .OPTION_ICACHE_WAYS(2),
  415.     .OPTION_ICACHE_LIMIT_WIDTH(32),
  416.     .FEATURE_IMMU("ENABLED"),
  417.     .FEATURE_DATACACHE("ENABLED"),
  418.     .OPTION_DCACHE_BLOCK_WIDTH(5),
  419.     .OPTION_DCACHE_SET_WIDTH(8),
  420.     .OPTION_DCACHE_WAYS(2),
  421.     .OPTION_DCACHE_LIMIT_WIDTH(31),
  422.     .FEATURE_DMMU("ENABLED"),
  423.     .OPTION_PIC_TRIGGER("LATCHED_LEVEL"),
  424.  
  425.     .IBUS_WB_TYPE("B3_REGISTERED_FEEDBACK"),
  426.     .DBUS_WB_TYPE("B3_REGISTERED_FEEDBACK"),
  427.     .OPTION_CPU0("CAPPUCCINO"),
  428.     .OPTION_RESET_PC(32'hf0000100)
  429. ) mor1kx0 (
  430.     .iwbm_adr_o(wb_m2s_or1k_i_adr),
  431.     .iwbm_stb_o(wb_m2s_or1k_i_stb),
  432.     .iwbm_cyc_o(wb_m2s_or1k_i_cyc),
  433.     .iwbm_sel_o(wb_m2s_or1k_i_sel),
  434.     .iwbm_we_o (wb_m2s_or1k_i_we),
  435.     .iwbm_cti_o(wb_m2s_or1k_i_cti),
  436.     .iwbm_bte_o(wb_m2s_or1k_i_bte),
  437.     .iwbm_dat_o(wb_m2s_or1k_i_dat),
  438.  
  439.     .dwbm_adr_o(wb_m2s_or1k_d_adr),
  440.     .dwbm_stb_o(wb_m2s_or1k_d_stb),
  441.     .dwbm_cyc_o(wb_m2s_or1k_d_cyc),
  442.     .dwbm_sel_o(wb_m2s_or1k_d_sel),
  443.     .dwbm_we_o (wb_m2s_or1k_d_we ),
  444.     .dwbm_cti_o(wb_m2s_or1k_d_cti),
  445.     .dwbm_bte_o(wb_m2s_or1k_d_bte),
  446.     .dwbm_dat_o(wb_m2s_or1k_d_dat),
  447.  
  448.     .clk(wb_clk),
  449.     .rst(or1k_rst),
  450.  
  451.     .iwbm_err_i(wb_s2m_or1k_i_err),
  452.     .iwbm_ack_i(wb_s2m_or1k_i_ack),
  453.     .iwbm_dat_i(wb_s2m_or1k_i_dat),
  454.     .iwbm_rty_i(wb_s2m_or1k_i_rty),
  455.  
  456.     .dwbm_err_i(wb_s2m_or1k_d_err),
  457.     .dwbm_ack_i(wb_s2m_or1k_d_ack),
  458.     .dwbm_dat_i(wb_s2m_or1k_d_dat),
  459.     .dwbm_rty_i(wb_s2m_or1k_d_rty),
  460.  
  461.     .avm_d_address_o (),
  462.     .avm_d_byteenable_o (),
  463.     .avm_d_read_o (),
  464.     .avm_d_readdata_i (32'h00000000),
  465.     .avm_d_burstcount_o (),
  466.     .avm_d_write_o (),
  467.     .avm_d_writedata_o (),
  468.     .avm_d_waitrequest_i (1'b0),
  469.     .avm_d_readdatavalid_i (1'b0),
  470.  
  471.     .avm_i_address_o (),
  472.     .avm_i_byteenable_o (),
  473.     .avm_i_read_o (),
  474.     .avm_i_readdata_i (32'h00000000),
  475.     .avm_i_burstcount_o (),
  476.     .avm_i_waitrequest_i (1'b0),
  477.     .avm_i_readdatavalid_i (1'b0),
  478.  
  479.     .irq_i(or1k_irq),
  480.  
  481.     .du_addr_i(or1k_dbg_adr_i[15:0]),
  482.     .du_stb_i(or1k_dbg_stb_i),
  483.     .du_dat_i(or1k_dbg_dat_i),
  484.     .du_we_i(or1k_dbg_we_i),
  485.     .du_dat_o(or1k_dbg_dat_o),
  486.     .du_ack_o(or1k_dbg_ack_o),
  487.     .du_stall_i(or1k_dbg_stall_i),
  488.     .du_stall_o(or1k_dbg_bp_o)
  489. );
  490.  
  491. `endif
  492. ////////////////////////////////////////////////////////////////////////
  493. //
  494. // Debug Interface
  495. //
  496. ////////////////////////////////////////////////////////////////////////
  497.  
  498. adbg_top dbg_if0 (
  499.     // OR1K interface
  500.     .cpu0_clk_i (wb_clk),
  501.     .cpu0_rst_o (or1k_dbg_rst),
  502.     .cpu0_addr_o    (or1k_dbg_adr_i),
  503.     .cpu0_data_o    (or1k_dbg_dat_i),
  504.     .cpu0_stb_o (or1k_dbg_stb_i),
  505.     .cpu0_we_o  (or1k_dbg_we_i),
  506.     .cpu0_data_i    (or1k_dbg_dat_o),
  507.     .cpu0_ack_i (or1k_dbg_ack_o),
  508.     .cpu0_stall_o   (or1k_dbg_stall_i),
  509.     .cpu0_bp_i  (or1k_dbg_bp_o),
  510.  
  511.     // TAP interface
  512.     .tck_i      (dbg_tck),
  513.     .tdi_i      (jtag_tap_tdo),
  514.     .tdo_o      (dbg_if_tdo),
  515.     .rst_i      (wb_rst),
  516.     .capture_dr_i   (jtag_tap_capture_dr),
  517.     .shift_dr_i (jtag_tap_shift_dr),
  518.     .pause_dr_i (jtag_tap_pause_dr),
  519.     .update_dr_i    (jtag_tap_update_dr),
  520.     .debug_select_i (dbg_if_select),
  521.  
  522.     // Wishbone debug master
  523.     .wb_clk_i   (wb_clk),
  524.     .wb_rst_i       (1'b0),
  525.     .wb_dat_i   (wb_s2m_dbg_dat),
  526.     .wb_ack_i   (wb_s2m_dbg_ack),
  527.     .wb_err_i   (wb_s2m_dbg_err),
  528.  
  529.     .wb_adr_o   (wb_m2s_dbg_adr),
  530.     .wb_dat_o   (wb_m2s_dbg_dat),
  531.     .wb_cyc_o   (wb_m2s_dbg_cyc),
  532.     .wb_stb_o   (wb_m2s_dbg_stb),
  533.     .wb_sel_o   (wb_m2s_dbg_sel),
  534.     .wb_we_o    (wb_m2s_dbg_we),
  535.     .wb_cab_o       (),
  536.     .wb_cti_o   (wb_m2s_dbg_cti),
  537.     .wb_bte_o   (wb_m2s_dbg_bte),
  538.  
  539.     .wb_jsp_adr_i (32'd0),
  540.     .wb_jsp_dat_i (32'd0),
  541.     .wb_jsp_cyc_i (1'b0),
  542.     .wb_jsp_stb_i (1'b0),
  543.     .wb_jsp_sel_i (4'h0),
  544.     .wb_jsp_we_i  (1'b0),
  545.     .wb_jsp_cab_i (1'b0),
  546.     .wb_jsp_cti_i (3'd0),
  547.     .wb_jsp_bte_i (2'd0),
  548.     .wb_jsp_dat_o (),
  549.     .wb_jsp_ack_o (),
  550.     .wb_jsp_err_o (),
  551.  
  552.     .int_o ()
  553. );
  554.  
  555. ////////////////////////////////////////////////////////////////////////
  556. //
  557. // ROM
  558. //
  559. ////////////////////////////////////////////////////////////////////////
  560.  
  561.    localparam WB_RAM_MEM_DEPTH = 256;
  562.    
  563. wb_ram
  564.   #(.depth (WB_RAM_MEM_DEPTH),
  565.     .memfile ("/w/sw/boot/bootrom.vh"))
  566.    wb_ram0
  567.      (//Wishbone Master interface
  568.       .wb_clk_i (wb_clk),
  569.       .wb_rst_i (wb_rst),
  570.       .wb_adr_i (wb_m2s_rom0_adr[$clog2(WB_RAM_MEM_DEPTH)-1:0]),
  571.       .wb_dat_i (wb_m2s_rom0_dat),
  572.       .wb_sel_i (wb_m2s_rom0_sel),
  573.       .wb_we_i  (wb_m2s_rom0_we),
  574.       .wb_cyc_i (wb_m2s_rom0_cyc),
  575.       .wb_stb_i (wb_m2s_rom0_stb),
  576.       .wb_cti_i (wb_m2s_rom0_cti),
  577.       .wb_bte_i (wb_m2s_rom0_bte),
  578.       .wb_dat_o (wb_s2m_rom0_dat),
  579.       .wb_ack_o (wb_s2m_rom0_ack),
  580.       .wb_err_o (wb_s2m_rom0_err));
  581.  
  582.    assign wb_s2m_rom0_rty = 1'b0;
  583.  
  584. ////////////////////////////////////////////////////////////////////////
  585. //
  586. // SDRAM Memory Controller
  587. //
  588. ////////////////////////////////////////////////////////////////////////
  589.  
  590. wire    [15:0]  sdram_dq_i;
  591. wire    [15:0]  sdram_dq_o;
  592. wire        sdram_dq_oe;
  593.  
  594. assign  sdram_dq_i = sdram_dq_pad_io;
  595. assign  sdram_dq_pad_io = sdram_dq_oe ? sdram_dq_o : 16'bz;
  596. assign  sdram_clk_pad_o = sdram_clk;
  597.  
  598. assign  wb_s2m_sdram_ibus_err = 0;
  599. assign  wb_s2m_sdram_ibus_rty = 0;
  600.  
  601. assign  wb_s2m_sdram_dbus_err = 0;
  602. assign  wb_s2m_sdram_dbus_rty = 0;
  603.  
  604. wb_sdram_ctrl #(
  605. `ifndef SIM
  606.     .TECHNOLOGY         ("ALTERA"),
  607. `endif
  608.     .CLK_FREQ_MHZ           (100),  // sdram_clk freq in MHZ
  609.     .POWERUP_DELAY          (200),  // power up delay in us
  610.     .WB_PORTS           (3),    // Number of wishbone ports
  611.     .ROW_WIDTH          (13),   // Row width
  612.     .COL_WIDTH          (9),    // Column width
  613.     .BA_WIDTH           (2),    // Ba width
  614.     .tCAC               (2),    // CAS Latency
  615.     .tRAC               (5),    // RAS Latency
  616.     .tRP                (2),    // Command Period (PRE to ACT)
  617.     .tRC                (7),    // Command Period (REF to REF / ACT to ACT)
  618.     .tMRD               (2) // Mode Register Set To Command Delay time
  619. )
  620.  
  621. wb_sdram_ctrl0 (
  622.     // External SDRAM interface
  623.     .ba_pad_o   (sdram_ba_pad_o[1:0]),
  624.     .a_pad_o    (sdram_a_pad_o[12:0]),
  625.     .cs_n_pad_o (sdram_cs_n_pad_o),
  626.     .ras_pad_o  (sdram_ras_pad_o),
  627.     .cas_pad_o  (sdram_cas_pad_o),
  628.     .we_pad_o   (sdram_we_pad_o),
  629.     .dq_i       (sdram_dq_i[15:0]),
  630.     .dq_o       (sdram_dq_o[15:0]),
  631.     .dqm_pad_o  (sdram_dqm_pad_o[1:0]),
  632.     .dq_oe      (sdram_dq_oe),
  633.     .cke_pad_o  (sdram_cke_pad_o),
  634.     .sdram_clk  (sdram_clk),
  635.     .sdram_rst  (sdram_rst),
  636.  
  637.     .wb_clk     (wb_clk),
  638.     .wb_rst     (wb_rst),
  639.  
  640.         .wb_adr_i ({wb_m2s_sdram_ibus_adr, wb_m2s_sdram_dbus_adr, wb_m2s_eth0_master_adr}),
  641.         .wb_stb_i ({wb_m2s_sdram_ibus_stb, wb_m2s_sdram_dbus_stb, wb_m2s_eth0_master_stb}),
  642.         .wb_cyc_i ({wb_m2s_sdram_ibus_cyc, wb_m2s_sdram_dbus_cyc, wb_m2s_eth0_master_cyc}),
  643.         .wb_cti_i ({wb_m2s_sdram_ibus_cti, wb_m2s_sdram_dbus_cti, wb_m2s_eth0_master_cti}),
  644.         .wb_bte_i ({wb_m2s_sdram_ibus_bte, wb_m2s_sdram_dbus_bte, wb_m2s_eth0_master_bte}),
  645.         .wb_we_i ({wb_m2s_sdram_ibus_we, wb_m2s_sdram_dbus_we, wb_m2s_eth0_master_we }),
  646.         .wb_sel_i ({wb_m2s_sdram_ibus_sel, wb_m2s_sdram_dbus_sel, wb_m2s_eth0_master_sel}),
  647.         .wb_dat_i ({wb_m2s_sdram_ibus_dat, wb_m2s_sdram_dbus_dat, wb_m2s_eth0_master_dat}),
  648.         .wb_dat_o ({wb_s2m_sdram_ibus_dat, wb_s2m_sdram_dbus_dat, wb_s2m_eth0_master_dat}),
  649.         .wb_ack_o ({wb_s2m_sdram_ibus_ack, wb_s2m_sdram_dbus_ack, wb_s2m_eth0_master_ack})
  650. );
  651.  
  652. ////////////////////////////////////////////////////////////////////////
  653. //
  654. // UART0
  655. //
  656. ////////////////////////////////////////////////////////////////////////
  657.  
  658. wire    uart0_irq;
  659.  
  660.  
  661. assign  wb_s2m_uart0_err = 0;
  662. assign  wb_s2m_uart0_rty = 0;
  663.  
  664. uart_top uart16550_0 (
  665.     // Wishbone slave interface
  666.     .wb_clk_i   (wb_clk),
  667.     .wb_rst_i   (wb_rst),
  668.     .wb_adr_i   (wb_m2s_uart0_adr[uart0_aw-1:0]),
  669.     .wb_dat_i   (wb_m2s_uart0_dat),
  670.     .wb_we_i    (wb_m2s_uart0_we),
  671.     .wb_stb_i   (wb_m2s_uart0_stb),
  672.     .wb_cyc_i   (wb_m2s_uart0_cyc),
  673.     .wb_sel_i   (4'b0), // Not used in 8-bit mode
  674.     .wb_dat_o   (wb_s2m_uart0_dat),
  675.     .wb_ack_o   (wb_s2m_uart0_ack),
  676.  
  677.     // Outputs
  678.     .int_o      (uart0_irq),
  679.     .stx_pad_o  (uart0_stx_pad_o),
  680.     .rts_pad_o  (),
  681.     .dtr_pad_o  (),
  682.  
  683.     // Inputs
  684.     .srx_pad_i  (uart0_srx_pad_i),
  685.     .cts_pad_i  (1'b0),
  686.     .dsr_pad_i  (1'b0),
  687.     .ri_pad_i   (1'b0),
  688.     .dcd_pad_i  (1'b0)
  689. );
  690.  
  691. `ifdef I2C0
  692. ////////////////////////////////////////////////////////////////////////
  693. //
  694. // I2C controller 0
  695. //
  696. ////////////////////////////////////////////////////////////////////////
  697.  
  698. //
  699. // Wires
  700. //
  701. wire        i2c0_irq;
  702. wire        scl0_pad_o;
  703. wire        scl0_padoen_o;
  704. wire        sda0_pad_o;
  705. wire        sda0_padoen_o;
  706.  
  707. i2c_master_top
  708.  #
  709.  (
  710.   .DEFAULT_SLAVE_ADDR(HV1_SADR)
  711.  )
  712. i2c0
  713.   (
  714.    .wb_clk_i                 (wb_clk),
  715.    .wb_rst_i                 (wb_rst),
  716.    .arst_i               (wb_rst),
  717.    .wb_adr_i                 (wb_m2s_i2c0_adr[i2c0_wb_adr_width-1:0]),
  718.    .wb_dat_i                 (wb_m2s_i2c0_dat),
  719.    .wb_we_i              (wb_m2s_i2c0_we),
  720.    .wb_cyc_i                 (wb_m2s_i2c0_cyc),
  721.    .wb_stb_i                 (wb_m2s_i2c0_stb),
  722.    .wb_dat_o                 (wb_s2m_i2c0_dat),
  723.    .wb_ack_o                 (wb_s2m_i2c0_ack),
  724.    .scl_pad_i                    (i2c0_scl_io        ),
  725.    .scl_pad_o                (scl0_pad_o     ),
  726.    .scl_padoen_o             (scl0_padoen_o  ),
  727.    .sda_pad_i                (i2c0_sda_io    ),
  728.    .sda_pad_o                (sda0_pad_o     ),
  729.    .sda_padoen_o             (sda0_padoen_o  ),
  730.  
  731.    // Interrupt
  732.    .wb_inta_o                (i2c0_irq)
  733.  
  734.    );
  735.  
  736. assign wb_s2m_i2c0_err = 0;
  737. assign wb_s2m_i2c0_rty = 0;
  738.  
  739. // i2c phy lines
  740. assign i2c0_scl_io = scl0_padoen_o ? 1'bz : scl0_pad_o;
  741. assign i2c0_sda_io = sda0_padoen_o ? 1'bz : sda0_pad_o;
  742.  
  743. ////////////////////////////////////////////////////////////////////////
  744. `else // !`ifdef I2C0
  745.  
  746. assign wb_s2m_i2c0_dat = 0;
  747. assign wb_s2m_i2c0_ack = 0;
  748. assign wb_s2m_i2c0_err = 0;
  749. assign wb_s2m_i2c0_rty = 0;
  750.  
  751. ////////////////////////////////////////////////////////////////////////
  752. `endif // !`ifdef I2C0
  753.  
  754. `ifdef I2C1
  755. ////////////////////////////////////////////////////////////////////////
  756. //
  757. // I2C controller 1
  758. //
  759. ////////////////////////////////////////////////////////////////////////
  760.  
  761. //
  762. // Wires
  763. //
  764. wire        i2c1_irq;
  765. wire        scl1_pad_o;
  766. wire        scl1_padoen_o;
  767. wire        sda1_pad_o;
  768. wire        sda1_padoen_o;
  769.  
  770. i2c_master_top
  771.  #
  772.  (
  773.   .DEFAULT_SLAVE_ADDR(HV1_SADR)
  774.  )
  775. i2c1
  776.   (
  777.    .wb_clk_i                 (wb_clk),
  778.    .wb_rst_i                 (wb_rst),
  779.    .arst_i               (wb_rst),
  780.    .wb_adr_i                 (wb_m2s_i2c1_adr[i2c1_wb_adr_width-1:0]),
  781.    .wb_dat_i                 (wb_m2s_i2c1_dat),
  782.    .wb_we_i              (wb_m2s_i2c1_we),
  783.    .wb_cyc_i                 (wb_m2s_i2c1_cyc),
  784.    .wb_stb_i                 (wb_m2s_i2c1_stb),
  785.    .wb_dat_o                 (wb_s2m_i2c1_dat),
  786.    .wb_ack_o                 (wb_s2m_i2c1_ack),
  787.    .scl_pad_i                    (i2c1_scl_io        ),
  788.    .scl_pad_o                (scl1_pad_o     ),
  789.    .scl_padoen_o             (scl1_padoen_o  ),
  790.    .sda_pad_i                (i2c1_sda_io    ),
  791.    .sda_pad_o                (sda1_pad_o     ),
  792.    .sda_padoen_o             (sda1_padoen_o  ),
  793.  
  794.    // Interrupt
  795.    .wb_inta_o                (i2c1_irq)
  796.  
  797.    );
  798.  
  799. assign wb_s2m_i2c1_err = 0;
  800. assign wb_s2m_i2c1_rty = 0;
  801.  
  802. // i2c phy lines
  803. assign i2c1_scl_io = scl1_padoen_o ? 1'bz : scl1_pad_o;
  804. assign i2c1_sda_io = sda1_padoen_o ? 1'bz : sda1_pad_o;
  805.  
  806. ////////////////////////////////////////////////////////////////////////
  807. `else // !`ifdef I2C1
  808.  
  809. assign wb_s2m_i2c1_dat = 0;
  810. assign wb_s2m_i2c1_ack = 0;
  811. assign wb_s2m_i2c1_err = 0;
  812. assign wb_s2m_i2c1_rty = 0;
  813.  
  814. ////////////////////////////////////////////////////////////////////////
  815. `endif // !`ifdef I2C1
  816.  
  817. `ifdef SPI0
  818. ////////////////////////////////////////////////////////////////////////
  819. //
  820. // SPI0 controller
  821. //
  822. ////////////////////////////////////////////////////////////////////////
  823.  
  824. //
  825. // Wires
  826. //
  827. wire            spi0_irq;
  828.  
  829. //
  830. // Assigns
  831. //
  832. assign  wbs_d_spi0_err_o = 0;
  833. assign  wbs_d_spi0_rty_o = 0;
  834. assign  spi0_hold_n_o = 1;
  835. assign  spi0_w_n_o = 1;
  836.  
  837. simple_spi spi0(
  838.     // Wishbone slave interface
  839.     .clk_i  (wb_clk),
  840.     .rst_i  (wb_rst),
  841.     .adr_i  (wb_m2s_spi0_adr[2:0]),
  842.     .dat_i  (wb_m2s_spi0_dat),
  843.     .we_i   (wb_m2s_spi0_we),
  844.     .stb_i  (wb_m2s_spi0_stb),
  845.     .cyc_i  (wb_m2s_spi0_cyc),
  846.     .dat_o  (wb_s2m_spi0_dat),
  847.     .ack_o  (wb_s2m_spi0_ack),
  848.  
  849.     // Outputs
  850.     .inta_o     (spi0_irq),
  851.     .sck_o      (spi0_sck_o),
  852.  `ifdef SPI0_SLAVE_SELECTS
  853.     .ss_o       (spi0_ss_o),
  854.  `else
  855.     .ss_o       (),
  856.  `endif
  857.     .mosi_o     (spi0_mosi_o),
  858.  
  859.     // Inputs
  860.     .miso_i     (spi0_miso_i)
  861. );
  862.  
  863. `endif
  864.  
  865. `ifdef SPI1
  866. ////////////////////////////////////////////////////////////////////////
  867. //
  868. // SPI1 controller
  869. //
  870. ////////////////////////////////////////////////////////////////////////
  871.  
  872. //
  873. // Wires
  874. //
  875. wire            spi1_irq;
  876.  
  877. //
  878. // Assigns
  879. //
  880. assign  wbs_d_spi1_err_o = 0;
  881. assign  wbs_d_spi1_rty_o = 0;
  882. assign  spi1_hold_n_o = 1;
  883. assign  spi1_w_n_o = 1;
  884.  
  885. simple_spi spi1(
  886.     // Wishbone slave interface
  887.     .clk_i  (wb_clk),
  888.     .rst_i  (wb_rst),
  889.     .adr_i  (wb_m2s_spi1_adr[2:0]),
  890.     .dat_i  (wb_m2s_spi1_dat),
  891.     .we_i   (wb_m2s_spi1_we),
  892.     .stb_i  (wb_m2s_spi1_stb),
  893.     .cyc_i  (wb_m2s_spi1_cyc),
  894.     .dat_o  (wb_s2m_spi1_dat),
  895.     .ack_o  (wb_s2m_spi1_ack),
  896.  
  897.     // Outputs
  898.     .inta_o     (spi1_irq),
  899.     .sck_o      (spi1_sck_o),
  900.  `ifdef SPI1_SLAVE_SELECTS
  901.     .ss_o       (spi1_ss_o),
  902.  `else
  903.     .ss_o       (),
  904.  `endif
  905.     .mosi_o     (spi1_mosi_o),
  906.  
  907.     // Inputs
  908.     .miso_i     (spi1_miso_i)
  909. );
  910.  
  911. `endif
  912.  
  913. `ifdef SPI2
  914. ////////////////////////////////////////////////////////////////////////
  915. //
  916. // SPI2 controller
  917. //
  918. ////////////////////////////////////////////////////////////////////////
  919.  
  920. //
  921. // Wires
  922. //
  923. wire            spi2_irq;
  924.  
  925. //
  926. // Assigns
  927. //
  928. assign  wbs_d_spi2_err_o = 0;
  929. assign  wbs_d_spi2_rty_o = 0;
  930. assign  spi2_hold_n_o = 1;
  931. assign  spi2_w_n_o = 1;
  932.  
  933. simple_spi spi2(
  934.     // Wishbone slave interface
  935.     .clk_i  (wb_clk),
  936.     .rst_i  (wb_rst),
  937.     .adr_i  (wb_m2s_spi2_adr[2:0]),
  938.     .dat_i  (wb_m2s_spi2_dat),
  939.     .we_i   (wb_m2s_spi2_we),
  940.     .stb_i  (wb_m2s_spi2_stb),
  941.     .cyc_i  (wb_m2s_spi2_cyc),
  942.     .dat_o  (wb_s2m_spi2_dat),
  943.     .ack_o  (wb_s2m_spi2_ack),
  944.  
  945.     // Outputs
  946.     .inta_o     (spi2_irq),
  947.     .sck_o      (spi2_sck_o),
  948.  `ifdef SPI2_SLAVE_SELECTS
  949.     .ss_o       (spi2_ss_o),
  950.  `else
  951.     .ss_o       (),
  952.  `endif
  953.     .mosi_o     (spi2_mosi_o),
  954.  
  955.     // Inputs
  956.     .miso_i     (spi2_miso_i)
  957. );
  958.  
  959. `endif
  960.  
  961. ////////////////////////////////////////////////////////////////////////
  962. //
  963. // GPIO 0
  964. //
  965. ////////////////////////////////////////////////////////////////////////
  966.  
  967. wire [7:0]  gpio0_in;
  968. wire [7:0]  gpio0_out;
  969. wire [7:0]  gpio0_dir;
  970.  
  971. // Tristate logic for IO
  972. // 0 = input, 1 = output
  973. genvar                    i;
  974. generate
  975.     for (i = 0; i < 8; i = i+1) begin: gpio0_tris
  976.         assign gpio0_io[i] = gpio0_dir[i] ? gpio0_out[i] : 1'bz;
  977.         assign gpio0_in[i] = gpio0_dir[i] ? gpio0_out[i] : gpio0_io[i];
  978.     end
  979. endgenerate
  980.  
  981. gpio gpio0 (
  982.     // GPIO bus
  983.     .gpio_i     (gpio0_in),
  984.     .gpio_o     (gpio0_out),
  985.     .gpio_dir_o (gpio0_dir),
  986.     // Wishbone slave interface
  987.     .wb_adr_i   (wb_m2s_gpio0_adr[0]),
  988.     .wb_dat_i   (wb_m2s_gpio0_dat),
  989.     .wb_we_i    (wb_m2s_gpio0_we),
  990.     .wb_cyc_i   (wb_m2s_gpio0_cyc),
  991.     .wb_stb_i   (wb_m2s_gpio0_stb),
  992.     .wb_cti_i   (wb_m2s_gpio0_cti),
  993.     .wb_bte_i   (wb_m2s_gpio0_bte),
  994.     .wb_dat_o   (wb_s2m_gpio0_dat),
  995.     .wb_ack_o   (wb_s2m_gpio0_ack),
  996.     .wb_err_o   (wb_s2m_gpio0_err),
  997.     .wb_rty_o   (wb_s2m_gpio0_rty),
  998.  
  999.     .wb_clk     (wb_clk),
  1000.     .wb_rst     (wb_rst)
  1001. );
  1002.  
  1003. gpio gpio1 (
  1004.     // GPIO bus
  1005.     .gpio_i     ({4'h0, gpio1_i}),
  1006.     .gpio_o     (),
  1007.     .gpio_dir_o (),
  1008.     // Wishbone slave interface
  1009.     .wb_adr_i   (wb_m2s_gpio1_adr[0]),
  1010.     .wb_dat_i   (wb_m2s_gpio1_dat),
  1011.     .wb_we_i    (wb_m2s_gpio1_we),
  1012.     .wb_cyc_i   (wb_m2s_gpio1_cyc),
  1013.     .wb_stb_i   (wb_m2s_gpio1_stb),
  1014.     .wb_cti_i   (wb_m2s_gpio1_cti),
  1015.     .wb_bte_i   (wb_m2s_gpio1_bte),
  1016.     .wb_dat_o   (wb_s2m_gpio1_dat),
  1017.     .wb_ack_o   (wb_s2m_gpio1_ack),
  1018.     .wb_err_o   (wb_s2m_gpio1_err),
  1019.     .wb_rty_o   (wb_s2m_gpio1_rty),
  1020.  
  1021.     .wb_clk     (wb_clk),
  1022.     .wb_rst     (wb_rst)
  1023. );
  1024. ////////////////////////////////////////////////////////////////////////
  1025. //
  1026. // Interrupt assignment
  1027. //
  1028. ////////////////////////////////////////////////////////////////////////
  1029.  
  1030. assign or1k_irq[0] = 0; // Non-maskable inside OR1K
  1031. assign or1k_irq[1] = 0; // Non-maskable inside OR1K
  1032. assign or1k_irq[2] = uart0_irq;
  1033. assign or1k_irq[3] = 0;
  1034. assign or1k_irq[4] = eth0_irq;
  1035. assign or1k_irq[5] = 0;
  1036. `ifdef SPI0
  1037.    assign or1k_irq[6] = spi0_irq;
  1038. `else
  1039.    assign or1k_irq[6] = 0;
  1040. `endif
  1041. `ifdef SPI1
  1042.    assign or1k_irq[7] = spi1_irq;
  1043. `else
  1044.    assign or1k_irq[7] = 0;
  1045. `endif
  1046. `ifdef SPI2
  1047.    assign or1k_irq[8] = spi1_irq;
  1048. `else
  1049.    assign or1k_irq[8] = 0;
  1050. `endif
  1051. assign or1k_irq[9] = 0;
  1052. `ifdef I2C0
  1053.    assign or1k_irq[10] = i2c0_irq;
  1054. `else
  1055.    assign or1k_irq[10] = 0;
  1056. `endif
  1057. `ifdef I2C1
  1058.    assign or1k_irq[11] = i2c1_irq;
  1059. `else
  1060.    assign or1k_irq[11] = 0;
  1061. `endif
  1062. assign or1k_irq[12] = 0;
  1063. assign or1k_irq[13] = 0;
  1064. assign or1k_irq[14] = 0;
  1065. assign or1k_irq[15] = 0;
  1066. assign or1k_irq[16] = 0;
  1067. assign or1k_irq[17] = 0;
  1068. assign or1k_irq[18] = 0;
  1069. assign or1k_irq[19] = 0;
  1070. assign or1k_irq[20] = 0;
  1071. assign or1k_irq[21] = 0;
  1072. assign or1k_irq[22] = 0;
  1073. assign or1k_irq[23] = 0;
  1074. assign or1k_irq[24] = accelerometer_irq_i;
  1075. assign or1k_irq[25] = 0;
  1076. assign or1k_irq[26] = 0;
  1077. assign or1k_irq[27] = 0;
  1078. assign or1k_irq[28] = 0;
  1079. assign or1k_irq[29] = 0;
  1080. assign or1k_irq[30] = 0;
  1081. assign or1k_irq[31] = 0;
  1082.  
  1083. endmodule // orpsoc_top
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement