1 /* ****************************************************************************
\r
2 -- Source file: core.v
\r
3 -- Date: October 15, 2016
\r
5 -- Description: Core wrapper for the logic. Minimized for fit to HX1K fabric.
\r
6 -- Language: Verilog-2001 and VHDL-1993
\r
7 -- Simulation: Mentor-Modelsim
\r
8 -- Synthesis: Xilinst-XST
\r
9 -- License: This project is licensed with the CERN Open Hardware Licence
\r
10 -- v1.2. You may redistribute and modify this project under the
\r
11 -- terms of the CERN OHL v.1.2. (http://ohwr.org/cernohl).
\r
12 -- This project is distributed WITHOUT ANY EXPRESS OR IMPLIED
\r
13 -- WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY
\r
14 -- AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN OHL
\r
15 -- v.1.2 for applicable Conditions.
\r
17 -- Revision History:
\r
18 -- Ver# When Who What
\r
19 -- ---- -------- -------- ---------------------------------------------------
\r
20 -- 0.1 10.15.16 khubbard Creation
\r
21 -- ***************************************************************************/
\r
22 `default_nettype none // Strictly enforce all nets to be declared
\r
28 input wire clk_cap,
\r
31 input wire [23:0] events_din,
\r
32 input wire [31:0] lb_addr,
\r
33 input wire [31:0] lb_wr_d,
\r
34 output wire [31:0] lb_rd_d,
\r
35 output wire lb_rd_rdy,
\r
36 output wire [3:0] led_bus
\r
40 wire [31:0] u0_lb_rd_d;
\r
42 wire [31:0] user_ctrl;
\r
43 wire lb_cs_sump2_ctrl;
\r
44 wire lb_cs_sump2_data;
\r
45 //wire [31:0] time_stamp_d;
\r
46 //reg [31:0] lb_08_reg;
\r
47 //reg [15:0] test_cnt;
\r
55 // ----------------------------------------------------------------------------
\r
56 // Test Design. VGA Controller
\r
57 // 3 Build Choices that fit the HX1K
\r
58 // o 16 bits from the Pins
\r
59 // o 8 bits of pins or 8 test counter on user_ctrl[0] == 1
\r
60 // o Sample graphics controller design ( 3 signals ).
\r
61 // ----------------------------------------------------------------------------
\r
62 //always @ ( posedge clk_cap ) begin : proc_test_cnt
\r
63 // if ( user_ctrl[0] == 0 ) begin
\r
64 // test_cnt[15:0] <= events_din[15:0];
\r
66 // test_cnt[7:0] <= test_cnt[7:0] + 1;
\r
70 // if ( h_cnt == 10'd800 ) begin
\r
75 // h_cnt <= h_cnt + 1;
\r
77 // if ( h_sync == 1 ) begin
\r
78 // if ( v_cnt == 10'd600 ) begin
\r
83 // v_cnt <= v_cnt + 1;
\r
89 // ----------------------------------------------------------------------------
\r
90 // LocalBus Test Registers
\r
91 // ----------------------------------------------------------------------------
\r
92 //always @ ( posedge clk_lb or posedge reset ) begin : proc_name
\r
93 // if ( reset == 1 ) begin
\r
94 // lb_rd_d <= 32'd0;
\r
96 // lb_08_reg <= 32'd0;
\r
98 // lb_rd_d <= 32'd0;
\r
101 // if ( lb_wr == 1 && lb_addr[19:16] == 4'H0 ) begin
\r
102 // if ( lb_addr[15:0] == 16'h0008 ) begin
\r
103 // lb_08_reg[31:0] <= lb_wr_d[31:0];
\r
105 // end // if ( lb_wr == 1 )
\r
107 // if ( lb_rd == 1 && lb_addr[19:16] == 4'H0 ) begin
\r
108 // if ( lb_addr[15:0] == 16'h0000 ) begin
\r
110 // lb_rd_d[31:0] <= 32'h12345678;
\r
112 // if ( lb_addr[15:0] == 16'h0004 ) begin
\r
114 // lb_rd_d[31:0] <= time_stamp_d[31:0];
\r
116 // if ( lb_addr[15:0] == 16'h0008 ) begin
\r
118 // lb_rd_d[31:0] <= lb_08_reg[31:0];
\r
120 // end // if ( lb_rd == 1 ) begin
\r
122 // if ( u0_lb_rd_rdy == 1 ) begin
\r
124 // lb_rd_d <= u0_lb_rd_d[31:0];
\r
126 // end // clk+reset
\r
129 //assign lb_cs_sump2_ctrl = ( lb_addr[3:0] == 4'h0 ) ? 1 : 0;
\r
130 //assign lb_cs_sump2_data = ( lb_addr[3:0] == 4'h4 ) ? 1 : 0;
\r
131 assign lb_cs_sump2_ctrl = ~ lb_addr[2];// 0x0
\r
132 assign lb_cs_sump2_data = lb_addr[2];// 0x4
\r
134 assign lb_rd_rdy = u0_lb_rd_rdy;
\r
135 assign lb_rd_d = u0_lb_rd_d[31:0];
\r
138 //-----------------------------------------------------------------------------
\r
139 // 32bit UNIX TimeStamp of when the design was synthesized
\r
140 //-----------------------------------------------------------------------------
\r
141 //time_stamp u_time_stamp
\r
143 // .time_dout ( time_stamp_d )
\r
147 //-----------------------------------------------------------------------------
\r
149 //-----------------------------------------------------------------------------
\r
153 .depth_len ( 1024 ),
\r
154 .depth_bits ( 10 ),
\r
155 .event_bytes ( 2 ),
\r
156 .data_dwords ( 0 ),
\r
160 .trigger_nth_en ( 0 ),
\r
161 .trigger_dly_en ( 0 ),
\r
162 .trigger_wd_en ( 0 ),
\r
163 .freq_mhz ( 16'd96 ),
\r
164 .freq_fracts ( 16'h0000 )
\r
169 .clk_lb ( clk_lb ),
\r
170 .clk_cap ( clk_cap ),
\r
171 .lb_cs_ctrl ( lb_cs_sump2_ctrl ),
\r
172 .lb_cs_data ( lb_cs_sump2_data ),
\r
175 .lb_wr_d ( lb_wr_d[31:0] ),
\r
176 .lb_rd_d ( u0_lb_rd_d ),
\r
177 .lb_rd_rdy ( u0_lb_rd_rdy ),
\r
179 .trigger_in ( 1'b0 ),
\r
181 .events_din ( {16'd0,events_din[15:0]} ),
\r
182 .dwords_3_0 ( 128'd0 ),
\r
183 .dwords_7_4 ( 128'd0 ),
\r
184 .dwords_11_8 ( 128'd0 ),
\r
185 .dwords_15_12 ( 128'd0 ),
\r
186 .led_bus ( led_bus[3:0] ),
\r
187 .user_ctrl ( user_ctrl[31:0] ),
\r