boot.v 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362
  1. `timescale 1 ps/ 1 ps
  2. module top (
  3. PIN_1,
  4. PIN_2,
  5. PIN_3,
  6. PIN_68,
  7. PIN_69,
  8. PIN_88,
  9. PIN_91,
  10. PIN_92,
  11. PIN_95,
  12. PIN_96,
  13. PIN_97,
  14. PIN_HSE,
  15. PIN_HSI,
  16. PIN_OSC
  17. );
  18. inout PIN_1;
  19. inout PIN_2;
  20. inout PIN_3;
  21. output PIN_68;
  22. input PIN_69;
  23. inout PIN_88;
  24. inout PIN_91;
  25. inout PIN_92;
  26. inout PIN_95;
  27. inout PIN_96;
  28. inout PIN_97;
  29. input PIN_HSE;
  30. input PIN_HSI;
  31. input PIN_OSC;
  32. // GPIO1_3, GPIO1_3
  33. assign PIN_1_in = PIN_1;
  34. wire PIN_1_out_en;
  35. wire PIN_1_out_data;
  36. assign PIN_1 = PIN_1_out_en ? PIN_1_out_data : 1'bz;
  37. // GPIO1_0, GPIO1_0
  38. assign PIN_2_in = PIN_2;
  39. wire PIN_2_out_en;
  40. wire PIN_2_out_data;
  41. assign PIN_2 = PIN_2_out_en ? PIN_2_out_data : 1'bz;
  42. // GPIO1_1, GPIO1_1
  43. assign PIN_3_in = PIN_3;
  44. wire PIN_3_out_en;
  45. wire PIN_3_out_data;
  46. assign PIN_3 = PIN_3_out_en ? PIN_3_out_data : 1'bz;
  47. // UART0_UARTTXD, GPIO7_6
  48. wire PIN_68_out_en;
  49. wire PIN_68_out_data;
  50. assign PIN_68 = PIN_68_out_en ? PIN_68_out_data : 1'bz;
  51. // UART0_UARTRXD, GPIO6_1
  52. assign PIN_69_in = PIN_69;
  53. // GPIO1_6, GPIO1_6
  54. assign PIN_88_in = PIN_88;
  55. wire PIN_88_out_en;
  56. wire PIN_88_out_data;
  57. assign PIN_88 = PIN_88_out_en ? PIN_88_out_data : 1'bz;
  58. // GPIO1_5, GPIO1_5
  59. assign PIN_91_in = PIN_91;
  60. wire PIN_91_out_en;
  61. wire PIN_91_out_data;
  62. assign PIN_91 = PIN_91_out_en ? PIN_91_out_data : 1'bz;
  63. // GPIO1_4, GPIO1_4
  64. assign PIN_92_in = PIN_92;
  65. wire PIN_92_out_en;
  66. wire PIN_92_out_data;
  67. assign PIN_92 = PIN_92_out_en ? PIN_92_out_data : 1'bz;
  68. // GPIO2_1, GPIO2_1
  69. assign PIN_95_in = PIN_95;
  70. wire PIN_95_out_en;
  71. wire PIN_95_out_data;
  72. assign PIN_95 = PIN_95_out_en ? PIN_95_out_data : 1'bz;
  73. // GPIO2_2, GPIO2_2
  74. assign PIN_96_in = PIN_96;
  75. wire PIN_96_out_en;
  76. wire PIN_96_out_data;
  77. assign PIN_96 = PIN_96_out_en ? PIN_96_out_data : 1'bz;
  78. // GPIO2_0, GPIO2_0
  79. assign PIN_97_in = PIN_97;
  80. wire PIN_97_out_en;
  81. wire PIN_97_out_data;
  82. assign PIN_97 = PIN_97_out_en ? PIN_97_out_data : 1'bz;
  83. // HSE clock
  84. assign PIN_HSE_in = PIN_HSE;
  85. // HSI clock
  86. assign PIN_HSI_in = PIN_HSI;
  87. // OSC clock
  88. assign PIN_OSC_in = PIN_OSC;
  89. wire [4:0] PLL_CLKOUT;
  90. (* keep = 1 *) wire sys_resetn;
  91. (* keep = 1 *) wire sys_ctrl_stop;
  92. (* keep = 1 *) wire [1:0] sys_ctrl_clkSource;
  93. (* keep = 1 *) wire PLL_ENABLE;
  94. (* keep = 1 *) wire PLL_LOCK;
  95. altpll pll_inst (
  96. .areset(!PLL_ENABLE),
  97. .inclk (PIN_HSE_in),
  98. .clk (PLL_CLKOUT),
  99. .locked(PLL_LOCK));
  100. defparam pll_inst.bandwidth_type = "AUTO";
  101. defparam pll_inst.clk0_divide_by = 6;
  102. defparam pll_inst.clk0_multiply_by = 90;
  103. defparam pll_inst.clk0_phase_shift = "0";
  104. defparam pll_inst.clk1_divide_by = 6;
  105. defparam pll_inst.clk1_multiply_by = 90;
  106. defparam pll_inst.clk1_phase_shift = "0";
  107. defparam pll_inst.clk2_divide_by = 6;
  108. defparam pll_inst.clk2_multiply_by = 90;
  109. defparam pll_inst.clk2_phase_shift = "0";
  110. defparam pll_inst.clk3_divide_by = 6;
  111. defparam pll_inst.clk3_multiply_by = 90;
  112. defparam pll_inst.clk3_phase_shift = "0";
  113. defparam pll_inst.clk4_divide_by = 6;
  114. defparam pll_inst.clk4_multiply_by = 90;
  115. defparam pll_inst.clk4_phase_shift = "0";
  116. defparam pll_inst.compensate_clock = "CLK0";
  117. defparam pll_inst.inclk0_input_frequency = 125000;
  118. defparam pll_inst.lpm_type = "altpll";
  119. defparam pll_inst.operation_mode = "NORMAL";
  120. defparam pll_inst.pll_type = "AUTO";
  121. defparam pll_inst.port_areset = "PORT_USED";
  122. defparam pll_inst.port_inclk0 = "PORT_USED";
  123. defparam pll_inst.port_locked = "PORT_USED";
  124. defparam pll_inst.port_clk0 = "PORT_USED";
  125. defparam pll_inst.port_clk1 = "PORT_UNUSED";
  126. defparam pll_inst.port_clk2 = "PORT_UNUSED";
  127. defparam pll_inst.port_clk3 = "PORT_UNUSED";
  128. defparam pll_inst.port_clk4 = "PORT_UNUSED";
  129. defparam pll_inst.width_clock = 5;
  130. wire sys_gck;
  131. assign bus_clk = sys_gck;
  132. // Location: BBOX_X22_Y4_N0 FIXED_COORD
  133. alta_gclksw gclksw_inst (
  134. .resetn(sys_resetn),
  135. .ena (1'b1),
  136. .clkin0(PIN_HSI_in),
  137. .clkin1(PIN_HSE_in),
  138. .clkin2(PLL_CLKOUT[0]),
  139. .clkin3(),
  140. .select(sys_ctrl_clkSource),
  141. .clkout(sys_clk));
  142. assign sys_gck = sys_clk;
  143. (* keep = 1 *) wire [1:0] mem_ahb_htrans;
  144. (* keep = 1 *) wire mem_ahb_hready;
  145. (* keep = 1 *) wire mem_ahb_hwrite;
  146. (* keep = 1 *) wire [31:0] mem_ahb_haddr;
  147. (* keep = 1 *) wire [2:0] mem_ahb_hsize;
  148. (* keep = 1 *) wire [2:0] mem_ahb_hburst;
  149. (* keep = 1 *) wire [31:0] mem_ahb_hwdata;
  150. (* keep = 1 *) wire mem_ahb_hreadyout;
  151. (* keep = 1 *) wire mem_ahb_hresp;
  152. (* keep = 1 *) wire [31:0] mem_ahb_hrdata;
  153. (* keep = 1 *) wire slave_ahb_hsel;
  154. (* keep = 1 *) wire slave_ahb_hready;
  155. (* keep = 1 *) wire slave_ahb_hreadyout;
  156. (* keep = 1 *) wire [1:0] slave_ahb_htrans;
  157. (* keep = 1 *) wire [2:0] slave_ahb_hsize;
  158. (* keep = 1 *) wire [2:0] slave_ahb_hburst;
  159. (* keep = 1 *) wire slave_ahb_hwrite;
  160. (* keep = 1 *) wire [31:0] slave_ahb_haddr;
  161. (* keep = 1 *) wire [31:0] slave_ahb_hwdata;
  162. (* keep = 1 *) wire slave_ahb_hresp;
  163. (* keep = 1 *) wire [31:0] slave_ahb_hrdata;
  164. (* keep = 1 *) wire [3:0] ext_dma_DMACBREQ;
  165. (* keep = 1 *) wire [3:0] ext_dma_DMACLBREQ;
  166. (* keep = 1 *) wire [3:0] ext_dma_DMACSREQ;
  167. (* keep = 1 *) wire [3:0] ext_dma_DMACLSREQ;
  168. (* keep = 1 *) wire [3:0] ext_dma_DMACCLR;
  169. (* keep = 1 *) wire [3:0] ext_dma_DMACTC;
  170. (* keep = 1 *) wire [3:0] local_int;
  171. boot_ip macro_inst(
  172. .sys_clock (sys_gck ),
  173. .bus_clock (bus_clk ),
  174. .resetn (sys_resetn ),
  175. .stop (sys_ctrl_stop ),
  176. .mem_ahb_htrans (mem_ahb_htrans ),
  177. .mem_ahb_hready (mem_ahb_hready ),
  178. .mem_ahb_hwrite (mem_ahb_hwrite ),
  179. .mem_ahb_haddr (mem_ahb_haddr ),
  180. .mem_ahb_hsize (mem_ahb_hsize ),
  181. .mem_ahb_hburst (mem_ahb_hburst ),
  182. .mem_ahb_hwdata (mem_ahb_hwdata ),
  183. .mem_ahb_hreadyout (mem_ahb_hreadyout ),
  184. .mem_ahb_hresp (mem_ahb_hresp ),
  185. .mem_ahb_hrdata (mem_ahb_hrdata ),
  186. .slave_ahb_hsel (slave_ahb_hsel ),
  187. .slave_ahb_hready (slave_ahb_hready ),
  188. .slave_ahb_hreadyout(slave_ahb_hreadyout),
  189. .slave_ahb_htrans (slave_ahb_htrans ),
  190. .slave_ahb_hsize (slave_ahb_hsize ),
  191. .slave_ahb_hburst (slave_ahb_hburst ),
  192. .slave_ahb_hwrite (slave_ahb_hwrite ),
  193. .slave_ahb_haddr (slave_ahb_haddr ),
  194. .slave_ahb_hwdata (slave_ahb_hwdata ),
  195. .slave_ahb_hresp (slave_ahb_hresp ),
  196. .slave_ahb_hrdata (slave_ahb_hrdata ),
  197. .ext_dma_DMACBREQ (ext_dma_DMACBREQ ),
  198. .ext_dma_DMACLBREQ (ext_dma_DMACLBREQ ),
  199. .ext_dma_DMACSREQ (ext_dma_DMACSREQ ),
  200. .ext_dma_DMACLSREQ (ext_dma_DMACLSREQ ),
  201. .ext_dma_DMACCLR (ext_dma_DMACCLR ),
  202. .ext_dma_DMACTC (ext_dma_DMACTC ),
  203. .local_int (local_int )
  204. );
  205. (* keep = 1 *) wire [7:0] gpio0_io_out_data;
  206. (* keep = 1 *) wire [7:0] gpio0_io_out_en;
  207. (* keep = 1 *) wire [7:0] gpio0_io_in = {1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0};
  208. (* keep = 1 *) wire [7:0] gpio1_io_out_data;
  209. (* keep = 1 *) wire [7:0] gpio1_io_out_en;
  210. assign PIN_2_out_data = gpio1_io_out_data[0];
  211. assign PIN_2_out_en = gpio1_io_out_en[0];
  212. assign PIN_3_out_data = gpio1_io_out_data[1];
  213. assign PIN_3_out_en = gpio1_io_out_en[1];
  214. assign PIN_1_out_data = gpio1_io_out_data[3];
  215. assign PIN_1_out_en = gpio1_io_out_en[3];
  216. assign PIN_92_out_data = gpio1_io_out_data[4];
  217. assign PIN_92_out_en = gpio1_io_out_en[4];
  218. assign PIN_91_out_data = gpio1_io_out_data[5];
  219. assign PIN_91_out_en = gpio1_io_out_en[5];
  220. assign PIN_88_out_data = gpio1_io_out_data[6];
  221. assign PIN_88_out_en = gpio1_io_out_en[6];
  222. (* keep = 1 *) wire [7:0] gpio1_io_in = {1'b0, PIN_88_in, PIN_91_in, PIN_92_in, PIN_1_in, 1'b0, PIN_3_in, PIN_2_in};
  223. (* keep = 1 *) wire [7:0] gpio2_io_out_data;
  224. (* keep = 1 *) wire [7:0] gpio2_io_out_en;
  225. assign PIN_97_out_data = gpio2_io_out_data[0];
  226. assign PIN_97_out_en = gpio2_io_out_en[0];
  227. assign PIN_95_out_data = gpio2_io_out_data[1];
  228. assign PIN_95_out_en = gpio2_io_out_en[1];
  229. assign PIN_96_out_data = gpio2_io_out_data[2];
  230. assign PIN_96_out_en = gpio2_io_out_en[2];
  231. (* keep = 1 *) wire [7:0] gpio2_io_in = {1'b0, 1'b0, 1'b0, 1'b0, 1'b0, PIN_96_in, PIN_95_in, PIN_97_in};
  232. (* keep = 1 *) wire [7:0] gpio3_io_out_data;
  233. (* keep = 1 *) wire [7:0] gpio3_io_out_en;
  234. (* keep = 1 *) wire [7:0] gpio3_io_in = {1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0};
  235. (* keep = 1 *) wire [7:0] gpio4_io_out_data;
  236. (* keep = 1 *) wire [7:0] gpio4_io_out_en;
  237. (* keep = 1 *) wire [7:0] gpio4_io_in = {1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0};
  238. (* keep = 1 *) wire [7:0] gpio5_io_out_data;
  239. (* keep = 1 *) wire [7:0] gpio5_io_out_en;
  240. (* keep = 1 *) wire [7:0] gpio5_io_in = {1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0};
  241. (* keep = 1 *) wire [7:0] gpio6_io_out_data;
  242. (* keep = 1 *) wire [7:0] gpio6_io_out_en;
  243. (* keep = 1 *) wire [7:0] gpio6_io_in = {1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, PIN_69_in, 1'b0};
  244. (* keep = 1 *) wire [7:0] gpio7_io_out_data;
  245. (* keep = 1 *) wire [7:0] gpio7_io_out_en;
  246. assign PIN_68_out_data = gpio7_io_out_data[6];
  247. assign PIN_68_out_en = gpio7_io_out_en[6];
  248. (* keep = 1 *) wire [7:0] gpio7_io_in = {1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0};
  249. (* keep = 1 *) wire [7:0] gpio8_io_out_data;
  250. (* keep = 1 *) wire [7:0] gpio8_io_out_en;
  251. (* keep = 1 *) wire [7:0] gpio8_io_in = {1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0};
  252. (* keep = 1 *) wire [7:0] gpio9_io_out_data;
  253. (* keep = 1 *) wire [7:0] gpio9_io_out_en;
  254. (* keep = 1 *) wire [7:0] gpio9_io_in = {1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0};
  255. alta_rv32 rv32(
  256. .sys_clk (sys_clk ),
  257. .sys_ctrl_stop (sys_ctrl_stop ),
  258. .sys_ctrl_clkSource (sys_ctrl_clkSource ),
  259. .resetn_out (sys_resetn ),
  260. .sys_ctrl_pllEnable (PLL_ENABLE ),
  261. .sys_ctrl_pllReady (PLL_LOCK ),
  262. .ext_resetn (1'b1 ),
  263. .test_mode (2'b0 ),
  264. .usb0_xcvr_clk (usb0_xcvr_clk ),
  265. .usb0_id (1'b1 ),
  266. .ext_int ({1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0}),
  267. .mem_ahb_htrans (mem_ahb_htrans ),
  268. .mem_ahb_hready (mem_ahb_hready ),
  269. .mem_ahb_hwrite (mem_ahb_hwrite ),
  270. .mem_ahb_haddr (mem_ahb_haddr ),
  271. .mem_ahb_hsize (mem_ahb_hsize ),
  272. .mem_ahb_hburst (mem_ahb_hburst ),
  273. .mem_ahb_hwdata (mem_ahb_hwdata ),
  274. .mem_ahb_hreadyout (mem_ahb_hreadyout ),
  275. .mem_ahb_hresp (mem_ahb_hresp ),
  276. .mem_ahb_hrdata (mem_ahb_hrdata ),
  277. .slave_ahb_hsel (slave_ahb_hsel ),
  278. .slave_ahb_hready (slave_ahb_hready ),
  279. .slave_ahb_hreadyout(slave_ahb_hreadyout ),
  280. .slave_ahb_htrans (slave_ahb_htrans ),
  281. .slave_ahb_hsize (slave_ahb_hsize ),
  282. .slave_ahb_hburst (slave_ahb_hburst ),
  283. .slave_ahb_hwrite (slave_ahb_hwrite ),
  284. .slave_ahb_haddr (slave_ahb_haddr ),
  285. .slave_ahb_hwdata (slave_ahb_hwdata ),
  286. .slave_ahb_hresp (slave_ahb_hresp ),
  287. .slave_ahb_hrdata (slave_ahb_hrdata ),
  288. .ext_dma_DMACBREQ (ext_dma_DMACBREQ ),
  289. .ext_dma_DMACLBREQ (ext_dma_DMACLBREQ ),
  290. .ext_dma_DMACSREQ (ext_dma_DMACSREQ ),
  291. .ext_dma_DMACLSREQ (ext_dma_DMACLSREQ ),
  292. .ext_dma_DMACCLR (ext_dma_DMACCLR ),
  293. .ext_dma_DMACTC (ext_dma_DMACTC ),
  294. .local_int (local_int ),
  295. .gpio0_io_in (gpio0_io_in ),
  296. .gpio0_io_out_data (gpio0_io_out_data ),
  297. .gpio0_io_out_en (gpio0_io_out_en ),
  298. .gpio1_io_in (gpio1_io_in ),
  299. .gpio1_io_out_data (gpio1_io_out_data ),
  300. .gpio1_io_out_en (gpio1_io_out_en ),
  301. .gpio2_io_in (gpio2_io_in ),
  302. .gpio2_io_out_data (gpio2_io_out_data ),
  303. .gpio2_io_out_en (gpio2_io_out_en ),
  304. .gpio3_io_in (gpio3_io_in ),
  305. .gpio3_io_out_data (gpio3_io_out_data ),
  306. .gpio3_io_out_en (gpio3_io_out_en ),
  307. .gpio4_io_in (gpio4_io_in ),
  308. .gpio4_io_out_data (gpio4_io_out_data ),
  309. .gpio4_io_out_en (gpio4_io_out_en ),
  310. .gpio5_io_in (gpio5_io_in ),
  311. .gpio5_io_out_data (gpio5_io_out_data ),
  312. .gpio5_io_out_en (gpio5_io_out_en ),
  313. .gpio6_io_in (gpio6_io_in ),
  314. .gpio6_io_out_data (gpio6_io_out_data ),
  315. .gpio6_io_out_en (gpio6_io_out_en ),
  316. .gpio7_io_in (gpio7_io_in ),
  317. .gpio7_io_out_data (gpio7_io_out_data ),
  318. .gpio7_io_out_en (gpio7_io_out_en ),
  319. .gpio8_io_in (gpio8_io_in ),
  320. .gpio8_io_out_data (gpio8_io_out_data ),
  321. .gpio8_io_out_en (gpio8_io_out_en ),
  322. .gpio9_io_in (gpio9_io_in ),
  323. .gpio9_io_out_data (gpio9_io_out_data ),
  324. .gpio9_io_out_en (gpio9_io_out_en )
  325. );
  326. endmodule