c9f8cba841b134d7aeeb27d1acd33e230e66e2fe
[BML_sump2] / sump2 / source / core.v
1 /* ****************************************************************************\r
2 -- Source file: core.v                \r
3 -- Date:        October 15, 2016\r
4 -- Author:      khubbard\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
16 --\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
23 \r
24 module core \r
25 (\r
26   input  wire         reset,\r
27   input  wire         clk_lb,   \r
28   input  wire         clk_cap,  \r
29   input  wire         lb_wr,\r
30   input  wire         lb_rd,\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
37 );// module core\r
38 \r
39 \r
40   wire [31:0]   u0_lb_rd_d;\r
41   wire          u0_lb_rd_rdy;\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
48 //reg  [9:0]    h_cnt;\r
49 //reg  [9:0]    v_cnt;\r
50 //reg           h_sync;\r
51 //reg           h_valid;\r
52 //reg           v_sync;\r
53 \r
54 \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
65 //  end else begin\r
66 //    test_cnt[7:0]  <= test_cnt[7:0]  + 1;\r
67 //  end \r
68 //  h_sync  <= 0;\r
69 //  h_valid <= 0;\r
70 //  if ( h_cnt == 10'd800 ) begin\r
71 //    h_cnt  <= 10'd1;\r
72 //    h_sync <= 1;\r
73 //  end else begin\r
74 //    h_valid <= 1;\r
75 //    h_cnt   <= h_cnt + 1;\r
76 //  end \r
77 //  if ( h_sync == 1 ) begin\r
78 //    if ( v_cnt ==  10'd600 ) begin\r
79 //      v_cnt  <= 10'd1;\r
80 //      v_sync <= 1;\r
81 //    end else begin\r
82 //      v_sync <= 0;\r
83 //      v_cnt  <= v_cnt + 1;\r
84 //    end \r
85 //  end\r
86 //end\r
87 \r
88 \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
95 //   lb_rd_rdy  <= 0;\r
96 //   lb_08_reg  <= 32'd0;\r
97 // end else begin\r
98 //   lb_rd_d    <= 32'd0;\r
99 //   lb_rd_rdy  <= 0;\r
100 //\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
104 //     end\r
105 //   end // if ( lb_wr == 1 )\r
106 //\r
107 //   if ( lb_rd == 1 && lb_addr[19:16] == 4'H0 ) begin\r
108 //     if ( lb_addr[15:0] == 16'h0000 ) begin\r
109 //       lb_rd_rdy     <= 1;\r
110 //       lb_rd_d[31:0] <= 32'h12345678;\r
111 //     end\r
112 //     if ( lb_addr[15:0] == 16'h0004 ) begin\r
113 //       lb_rd_rdy     <= 1;\r
114 //       lb_rd_d[31:0] <= time_stamp_d[31:0];\r
115 //     end\r
116 //     if ( lb_addr[15:0] == 16'h0008 ) begin\r
117 //       lb_rd_rdy     <= 1;\r
118 //       lb_rd_d[31:0] <= lb_08_reg[31:0];\r
119 //     end \r
120 //   end // if ( lb_rd == 1 ) begin\r
121 //\r
122 // if ( u0_lb_rd_rdy == 1 ) begin\r
123 //   lb_rd_rdy <= 1;\r
124 //   lb_rd_d   <= u0_lb_rd_d[31:0];\r
125 // end\r
126 // end // clk+reset\r
127 //end // proc_name\r
128 \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
133 \r
134   assign lb_rd_rdy = u0_lb_rd_rdy;\r
135   assign lb_rd_d   = u0_lb_rd_d[31:0];\r
136 \r
137 \r
138 //-----------------------------------------------------------------------------\r
139 // 32bit UNIX TimeStamp of when the design was synthesized\r
140 //-----------------------------------------------------------------------------\r
141 //time_stamp u_time_stamp\r
142 //(\r
143 //  .time_dout                        ( time_stamp_d                   )\r
144 //);\r
145 \r
146 \r
147 //-----------------------------------------------------------------------------\r
148 // SUMP2 Example\r
149 //-----------------------------------------------------------------------------\r
150 sump2\r
151 #\r
152 (\r
153   .depth_len      (  1024                   ),\r
154   .depth_bits     (  10                     ),\r
155   .event_bytes    (  2                      ),\r
156   .data_dwords    (  0                      ),\r
157   .nonrle_en      (  0                      ),\r
158   .rle_en         (  1                      ),\r
159   .pattern_en     (  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
165 )\r
166 u_sump2\r
167 (\r
168   .reset         ( reset                    ),\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
173   .lb_wr         ( lb_wr                    ),\r
174   .lb_rd         ( lb_rd                    ),\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
178   .active        (                          ),\r
179   .trigger_in    ( 1'b0                     ),\r
180   .trigger_out   (                          ),\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
188   .user_pat0     (                          ),\r
189   .user_pat1     (                          )\r
190 );\r
191 \r
192 \r
193 endmodule // core\r