[2] | 1 | //Legal Notice: (C)2006 Altera Corporation. All rights reserved. Your
|
---|
| 2 | //use of Altera Corporation's design tools, logic functions and other
|
---|
| 3 | //software and tools, and its AMPP partner logic functions, and any
|
---|
| 4 | //output files any of the foregoing (including device programming or
|
---|
| 5 | //simulation files), and any associated documentation or information are
|
---|
| 6 | //expressly subject to the terms and conditions of the Altera Program
|
---|
| 7 | //License Subscription Agreement or other applicable license agreement,
|
---|
| 8 | //including, without limitation, that your use is for the sole purpose
|
---|
| 9 | //of programming logic devices manufactured by Altera and sold by Altera
|
---|
| 10 | //or its authorized distributors. Please refer to the applicable
|
---|
| 11 | //agreement for further details.
|
---|
| 12 |
|
---|
| 13 |
|
---|
| 14 | module CII_Starter_TOP
|
---|
| 15 | (
|
---|
| 16 | //////////////////// Clock Input ////////////////////
|
---|
| 17 | CLOCK_24, // 24 MHz
|
---|
| 18 | CLOCK_27, // 27 MHz
|
---|
| 19 | CLOCK_50, // 50 MHz
|
---|
| 20 | EXT_CLOCK, // External Clock
|
---|
| 21 | //////////////////// Push Button ////////////////////
|
---|
| 22 | KEY, // Pushbutton[3:0]
|
---|
| 23 | //////////////////// DPDT Switch ////////////////////
|
---|
| 24 | SW, // Toggle Switch[9:0]
|
---|
| 25 | //////////////////// 7-SEG Dispaly ////////////////////
|
---|
| 26 | HEX0, // Seven Segment Digit 0
|
---|
| 27 | HEX1, // Seven Segment Digit 1
|
---|
| 28 | HEX2, // Seven Segment Digit 2
|
---|
| 29 | HEX3, // Seven Segment Digit 3
|
---|
| 30 | //////////////////////// LED ////////////////////////
|
---|
| 31 | LEDG, // LED Green[7:0]
|
---|
| 32 | LEDR, // LED Red[9:0]
|
---|
| 33 | //////////////////////// UART ////////////////////////
|
---|
| 34 | UART_TXD, // UART Transmitter
|
---|
| 35 | UART_RXD, // UART Receiver
|
---|
| 36 | ///////////////////// SDRAM Interface ////////////////
|
---|
| 37 | DRAM_DQ, // SDRAM Data bus 16 Bits
|
---|
| 38 | DRAM_ADDR, // SDRAM Address bus 12 Bits
|
---|
| 39 | DRAM_LDQM, // SDRAM Low-byte Data Mask
|
---|
| 40 | DRAM_UDQM, // SDRAM High-byte Data Mask
|
---|
| 41 | DRAM_WE_N, // SDRAM Write Enable
|
---|
| 42 | DRAM_CAS_N, // SDRAM Column Address Strobe
|
---|
| 43 | DRAM_RAS_N, // SDRAM Row Address Strobe
|
---|
| 44 | DRAM_CS_N, // SDRAM Chip Select
|
---|
| 45 | DRAM_BA_0, // SDRAM Bank Address 0
|
---|
| 46 | DRAM_BA_1, // SDRAM Bank Address 0
|
---|
| 47 | DRAM_CLK, // SDRAM Clock
|
---|
| 48 | DRAM_CKE, // SDRAM Clock Enable
|
---|
| 49 | //////////////////// Flash Interface ////////////////
|
---|
| 50 | FL_DQ, // FLASH Data bus 8 Bits
|
---|
| 51 | FL_ADDR, // FLASH Address bus 22 Bits
|
---|
| 52 | FL_WE_N, // FLASH Write Enable
|
---|
| 53 | FL_RST_N, // FLASH Reset
|
---|
| 54 | FL_OE_N, // FLASH Output Enable
|
---|
| 55 | FL_CE_N, // FLASH Chip Enable
|
---|
| 56 | //////////////////// SRAM Interface ////////////////
|
---|
| 57 | SRAM_DQ, // SRAM Data bus 16 Bits
|
---|
| 58 | SRAM_ADDR, // SRAM Address bus 18 Bits
|
---|
| 59 | SRAM_UB_N, // SRAM High-byte Data Mask
|
---|
| 60 | SRAM_LB_N, // SRAM Low-byte Data Mask
|
---|
| 61 | SRAM_WE_N, // SRAM Write Enable
|
---|
| 62 | SRAM_CE_N, // SRAM Chip Enable
|
---|
| 63 | SRAM_OE_N, // SRAM Output Enable
|
---|
| 64 | //////////////////// SD_Card Interface ////////////////
|
---|
| 65 | SD_DAT, // SD Card Data
|
---|
| 66 | SD_DAT3, // SD Card Data 3
|
---|
| 67 | SD_CMD, // SD Card Command Signal
|
---|
| 68 | SD_CLK, // SD Card Clock
|
---|
| 69 | //////////////////// USB JTAG link ////////////////////
|
---|
| 70 | TDI, // CPLD -> FPGA (data in)
|
---|
| 71 | TCK, // CPLD -> FPGA (clk)
|
---|
| 72 | TCS, // CPLD -> FPGA (CS)
|
---|
| 73 | TDO, // FPGA -> CPLD (data out)
|
---|
| 74 | //////////////////// I2C ////////////////////////////
|
---|
| 75 | I2C_SDAT, // I2C Data
|
---|
| 76 | I2C_SCLK, // I2C Clock
|
---|
| 77 | //////////////////// PS2 ////////////////////////////
|
---|
| 78 | PS2_DAT, // PS2 Data
|
---|
| 79 | PS2_CLK, // PS2 Clock
|
---|
| 80 | //////////////////// VGA ////////////////////////////
|
---|
| 81 | VGA_HS, // VGA H_SYNC
|
---|
| 82 | VGA_VS, // VGA V_SYNC
|
---|
| 83 | VGA_R, // VGA Red[3:0]
|
---|
| 84 | VGA_G, // VGA Green[3:0]
|
---|
| 85 | VGA_B, // VGA Blue[3:0]
|
---|
| 86 | //////////////// Audio CODEC ////////////////////////
|
---|
| 87 | AUD_ADCLRCK, // Audio CODEC ADC LR Clock
|
---|
| 88 | AUD_ADCDAT, // Audio CODEC ADC Data
|
---|
| 89 | AUD_DACLRCK, // Audio CODEC DAC LR Clock
|
---|
| 90 | AUD_DACDAT, // Audio CODEC DAC Data
|
---|
| 91 | AUD_BCLK, // Audio CODEC Bit-Stream Clock
|
---|
| 92 | AUD_XCK, // Audio CODEC Chip Clock
|
---|
| 93 | //////////////////// GPIO ////////////////////////////
|
---|
| 94 | GPIO_0, // GPIO Connection 0
|
---|
| 95 | GPIO_1 // GPIO Connection 1
|
---|
| 96 | );
|
---|
| 97 |
|
---|
| 98 | //////////////////////// Clock Input ////////////////////////
|
---|
| 99 | input [1:0] CLOCK_24; // 24 MHz
|
---|
| 100 | input [1:0] CLOCK_27; // 27 MHz
|
---|
| 101 | input CLOCK_50; // 50 MHz
|
---|
| 102 | input EXT_CLOCK; // External Clock
|
---|
| 103 | //////////////////////// Push Button ////////////////////////
|
---|
| 104 | input [3:0] KEY; // Pushbutton[3:0]
|
---|
| 105 | //////////////////////// DPDT Switch ////////////////////////
|
---|
| 106 | input [9:0] SW; // Toggle Switch[9:0]
|
---|
| 107 | //////////////////////// 7-SEG Dispaly ////////////////////////
|
---|
| 108 | output [6:0] HEX0; // Seven Segment Digit 0
|
---|
| 109 | output [6:0] HEX1; // Seven Segment Digit 1
|
---|
| 110 | output [6:0] HEX2; // Seven Segment Digit 2
|
---|
| 111 | output [6:0] HEX3; // Seven Segment Digit 3
|
---|
| 112 | //////////////////////////// LED ////////////////////////////
|
---|
| 113 | output [7:0] LEDG; // LED Green[7:0]
|
---|
| 114 | output [9:0] LEDR; // LED Red[9:0]
|
---|
| 115 | //////////////////////////// UART ////////////////////////////
|
---|
| 116 | output UART_TXD; // UART Transmitter
|
---|
| 117 | input UART_RXD; // UART Receiver
|
---|
| 118 | /////////////////////// SDRAM Interface ////////////////////////
|
---|
| 119 | inout [15:0] DRAM_DQ; // SDRAM Data bus 16 Bits
|
---|
| 120 | output [11:0] DRAM_ADDR; // SDRAM Address bus 12 Bits
|
---|
| 121 | output DRAM_LDQM; // SDRAM Low-byte Data Mask
|
---|
| 122 | output DRAM_UDQM; // SDRAM High-byte Data Mask
|
---|
| 123 | output DRAM_WE_N; // SDRAM Write Enable
|
---|
| 124 | output DRAM_CAS_N; // SDRAM Column Address Strobe
|
---|
| 125 | output DRAM_RAS_N; // SDRAM Row Address Strobe
|
---|
| 126 | output DRAM_CS_N; // SDRAM Chip Select
|
---|
| 127 | output DRAM_BA_0; // SDRAM Bank Address 0
|
---|
| 128 | output DRAM_BA_1; // SDRAM Bank Address 0
|
---|
| 129 | output DRAM_CLK; // SDRAM Clock
|
---|
| 130 | output DRAM_CKE; // SDRAM Clock Enable
|
---|
| 131 | //////////////////////// Flash Interface ////////////////////////
|
---|
| 132 | inout [7:0] FL_DQ; // FLASH Data bus 8 Bits
|
---|
| 133 | output [21:0] FL_ADDR; // FLASH Address bus 22 Bits
|
---|
| 134 | output FL_WE_N; // FLASH Write Enable
|
---|
| 135 | output FL_RST_N; // FLASH Reset
|
---|
| 136 | output FL_OE_N; // FLASH Output Enable
|
---|
| 137 | output FL_CE_N; // FLASH Chip Enable
|
---|
| 138 | //////////////////////// SRAM Interface ////////////////////////
|
---|
| 139 | inout [15:0] SRAM_DQ; // SRAM Data bus 16 Bits
|
---|
| 140 | output [17:0] SRAM_ADDR; // SRAM Address bus 18 Bits
|
---|
| 141 | output SRAM_UB_N; // SRAM High-byte Data Mask
|
---|
| 142 | output SRAM_LB_N; // SRAM Low-byte Data Mask
|
---|
| 143 | output SRAM_WE_N; // SRAM Write Enable
|
---|
| 144 | output SRAM_CE_N; // SRAM Chip Enable
|
---|
| 145 | output SRAM_OE_N; // SRAM Output Enable
|
---|
| 146 | //////////////////// SD Card Interface ////////////////////////
|
---|
| 147 | inout SD_DAT; // SD Card Data
|
---|
| 148 | inout SD_DAT3; // SD Card Data 3
|
---|
| 149 | inout SD_CMD; // SD Card Command Signal
|
---|
| 150 | output SD_CLK; // SD Card Clock
|
---|
| 151 | //////////////////////// I2C ////////////////////////////////
|
---|
| 152 | inout I2C_SDAT; // I2C Data
|
---|
| 153 | output I2C_SCLK; // I2C Clock
|
---|
| 154 | //////////////////////// PS2 ////////////////////////////////
|
---|
| 155 | input PS2_DAT; // PS2 Data
|
---|
| 156 | input PS2_CLK; // PS2 Clock
|
---|
| 157 | //////////////////// USB JTAG link ////////////////////////////
|
---|
| 158 | input TDI; // CPLD -> FPGA (data in)
|
---|
| 159 | input TCK; // CPLD -> FPGA (clk)
|
---|
| 160 | input TCS; // CPLD -> FPGA (CS)
|
---|
| 161 | output TDO; // FPGA -> CPLD (data out)
|
---|
| 162 | //////////////////////// VGA ////////////////////////////
|
---|
| 163 | output VGA_HS; // VGA H_SYNC
|
---|
| 164 | output VGA_VS; // VGA V_SYNC
|
---|
| 165 | output [3:0] VGA_R; // VGA Red[3:0]
|
---|
| 166 | output [3:0] VGA_G; // VGA Green[3:0]
|
---|
| 167 | output [3:0] VGA_B; // VGA Blue[3:0]
|
---|
| 168 | //////////////////// Audio CODEC ////////////////////////////
|
---|
| 169 | inout AUD_ADCLRCK; // Audio CODEC ADC LR Clock
|
---|
| 170 | input AUD_ADCDAT; // Audio CODEC ADC Data
|
---|
| 171 | inout AUD_DACLRCK; // Audio CODEC DAC LR Clock
|
---|
| 172 | output AUD_DACDAT; // Audio CODEC DAC Data
|
---|
| 173 | inout AUD_BCLK; // Audio CODEC Bit-Stream Clock
|
---|
| 174 | output AUD_XCK; // Audio CODEC Chip Clock
|
---|
| 175 | //////////////////////// GPIO ////////////////////////////////
|
---|
| 176 | inout [35:0] GPIO_0; // GPIO Connection 0
|
---|
| 177 | inout [35:0] GPIO_1; // GPIO Connection 1
|
---|
| 178 |
|
---|
| 179 | // Turn off all display
|
---|
| 180 | assign HEX0 = 7'h7F;
|
---|
| 181 | assign HEX1 = 7'h7F;
|
---|
| 182 | assign HEX2 = 7'h7F;
|
---|
| 183 | assign HEX3 = 7'h7F;
|
---|
| 184 | // assign LEDG = 8'h00;
|
---|
| 185 | assign LEDR = 10'h000;
|
---|
| 186 |
|
---|
| 187 | // All inout port turn to tri-state
|
---|
| 188 | assign DRAM_DQ = 16'bz;
|
---|
| 189 | assign FL_DQ = 8'bz;
|
---|
| 190 | assign SRAM_DQ = 16'bz;
|
---|
| 191 | assign SD_DAT = 1'bz;
|
---|
| 192 | assign I2C_SDAT = 1'bz;
|
---|
| 193 | assign AUD_ADCLRCK = 1'bz;
|
---|
| 194 | assign AUD_DACLRCK = 1'bz;
|
---|
| 195 | assign AUD_BCLK = 1'bz;
|
---|
| 196 | assign GPIO_0 = 36'bz;
|
---|
| 197 | // assign GPIO_1 = 36'bz;
|
---|
| 198 |
|
---|
| 199 |
|
---|
| 200 | reg [9:0] osc_counter;
|
---|
| 201 | reg [25:0] hst_counter;
|
---|
| 202 |
|
---|
| 203 | reg osc_reset;
|
---|
| 204 | reg osc_bit_num;
|
---|
| 205 | wire [9:0] osc_start_addr;
|
---|
| 206 | reg [9:0] osc_addr;
|
---|
| 207 | wire [15:0] osc_q;
|
---|
| 208 |
|
---|
| 209 | reg hst_reset;
|
---|
| 210 | reg [1:0] hst_bit_num;
|
---|
| 211 | reg [11:0] hst_addr;
|
---|
| 212 | wire [31:0] hst_q;
|
---|
| 213 |
|
---|
| 214 | reg [3:0] state0, state1, state2;
|
---|
| 215 | reg adc_fifo_rdreq;
|
---|
| 216 | wire adc_fifo_rdempty;
|
---|
| 217 | reg adc_fifo_aclr;
|
---|
| 218 | reg rd_uart, wr_uart;
|
---|
| 219 | wire tx_full, rx_empty;
|
---|
| 220 |
|
---|
| 221 | wire [7:0] RxD_data;
|
---|
| 222 | reg [7:0] TxD_data;
|
---|
| 223 |
|
---|
| 224 | wire [4:0] led;
|
---|
| 225 |
|
---|
| 226 | reg adc_data_ready;
|
---|
| 227 | wire adc_dr, adc_or;
|
---|
| 228 | // wire [11:0] adc_data;
|
---|
| 229 | reg [11:0] adc_data;
|
---|
| 230 | wire [11:0] raw_data;
|
---|
| 231 | wire [11:0] uwt_data;
|
---|
| 232 | wire [1:0] uwt_flag;
|
---|
| 233 |
|
---|
| 234 | assign GPIO_1[21:0]= 22'bz;
|
---|
| 235 | assign adc_or = GPIO_1[35];
|
---|
| 236 | // assign adc_data = GPIO_1[34:23];
|
---|
| 237 | // assign adc_dr = GPIO_1[22];
|
---|
| 238 | assign adc_dr = CLOCK_24[0];
|
---|
| 239 |
|
---|
| 240 | assign LEDG = {3'h0, led};
|
---|
| 241 |
|
---|
| 242 | assign led[4] = hst_counter[23];
|
---|
| 243 |
|
---|
| 244 | uart uart_unit (
|
---|
| 245 | .clk(CLOCK_50),
|
---|
| 246 | .reset(1'b0),
|
---|
| 247 | .rd_uart(rd_uart),
|
---|
| 248 | .wr_uart(wr_uart),
|
---|
| 249 | .rx(UART_RXD),
|
---|
| 250 | .w_data(TxD_data),
|
---|
| 251 | .tx_full(tx_full),
|
---|
| 252 | .rx_empty(rx_empty),
|
---|
| 253 | .r_data(RxD_data),
|
---|
| 254 | .tx(UART_TXD));
|
---|
| 255 |
|
---|
| 256 | adc_fifo adc_fifo_unit (
|
---|
| 257 | .adc_dr(adc_dr),
|
---|
| 258 | .adc_or(adc_or),
|
---|
| 259 | .adc_data(adc_data),
|
---|
| 260 | .aclr(adc_fifo_aclr),
|
---|
| 261 | .rdclk(CLOCK_50),
|
---|
| 262 | .rdreq(adc_fifo_rdreq),
|
---|
| 263 | .rdempty(adc_fifo_rdempty),
|
---|
| 264 | .raw_data(raw_data),
|
---|
| 265 | .uwt_data({uwt_flag, uwt_data}));
|
---|
| 266 |
|
---|
| 267 | histogram histogram_unit (
|
---|
| 268 | .clk(CLOCK_50),
|
---|
| 269 | .reset(hst_reset),
|
---|
| 270 | .data_ready(adc_data_ready),
|
---|
| 271 | .data(raw_data),
|
---|
| 272 | .address(hst_addr),
|
---|
| 273 | .q(hst_q),
|
---|
| 274 | .led(led[3:0])
|
---|
| 275 | );
|
---|
| 276 |
|
---|
| 277 | oscilloscope oscilloscope_unit (
|
---|
| 278 | .clk(CLOCK_50),
|
---|
| 279 | .reset(osc_reset),
|
---|
| 280 | .data_ready(adc_data_ready),
|
---|
| 281 | .raw_data(raw_data),
|
---|
| 282 | .uwt_data(uwt_data),
|
---|
| 283 | .threshold(16'd100),
|
---|
| 284 | .address(osc_addr),
|
---|
| 285 | .start_address(osc_start_addr),
|
---|
| 286 | .q(osc_q)
|
---|
| 287 | );
|
---|
| 288 |
|
---|
| 289 |
|
---|
| 290 | always @ (posedge CLOCK_50)
|
---|
| 291 | begin
|
---|
| 292 |
|
---|
| 293 | case (state0)
|
---|
| 294 | 1:
|
---|
| 295 | begin
|
---|
| 296 | if (~adc_fifo_rdempty)
|
---|
| 297 | begin
|
---|
| 298 | adc_fifo_rdreq <= 1'b1;
|
---|
| 299 | adc_data_ready <= 1'b1;
|
---|
| 300 | state0 <= 4'd2;
|
---|
| 301 | end
|
---|
| 302 | end
|
---|
| 303 |
|
---|
| 304 | 2:
|
---|
| 305 | begin
|
---|
| 306 | adc_fifo_rdreq <= 1'b0;
|
---|
| 307 | adc_data_ready <= 1'b0;
|
---|
| 308 | state0 <= 4'd1;
|
---|
| 309 | end
|
---|
| 310 |
|
---|
| 311 | default:
|
---|
| 312 | begin
|
---|
| 313 | state0 <= 4'd1;
|
---|
| 314 | end
|
---|
| 315 | endcase
|
---|
| 316 |
|
---|
| 317 | case (state1)
|
---|
| 318 | 1:
|
---|
| 319 | begin
|
---|
| 320 | rd_uart <= 1'b0;
|
---|
| 321 | hst_reset <= 1'b0;
|
---|
| 322 | osc_reset <= 1'b0;
|
---|
| 323 | state1 <= 4'd2;
|
---|
| 324 | end
|
---|
| 325 |
|
---|
| 326 | 2:
|
---|
| 327 | begin
|
---|
| 328 | if (~rx_empty)
|
---|
| 329 | begin
|
---|
| 330 | rd_uart <= 1'b1;
|
---|
| 331 | case (RxD_data)
|
---|
| 332 | 8'h30:
|
---|
| 333 | begin
|
---|
| 334 | hst_reset <= 1'b1;
|
---|
| 335 | state1 <= 4'd1;
|
---|
| 336 | end
|
---|
| 337 | 8'h31: state1 <= 4'd3;
|
---|
| 338 | 8'h32:
|
---|
| 339 | begin
|
---|
| 340 | osc_reset <= 1'b1;
|
---|
| 341 | state1 <= 4'd1;
|
---|
| 342 | end
|
---|
| 343 | 8'h33: state1 <= 4'd7;
|
---|
| 344 | endcase
|
---|
| 345 | end
|
---|
| 346 | else
|
---|
| 347 | begin
|
---|
| 348 | rd_uart <= 1'b0;
|
---|
| 349 | end
|
---|
| 350 | end
|
---|
| 351 |
|
---|
| 352 | 3:
|
---|
| 353 | begin
|
---|
| 354 | // start hst transfer
|
---|
| 355 | rd_uart <= 1'b0;
|
---|
| 356 | hst_addr <= 12'h0;
|
---|
| 357 | hst_bit_num <= 2'd0;
|
---|
| 358 | state1 <= 4'd4;
|
---|
| 359 | end
|
---|
| 360 |
|
---|
| 361 | 4:
|
---|
| 362 | begin
|
---|
| 363 | case (hst_bit_num)
|
---|
| 364 | 2'd0: TxD_data <= hst_q[7:0];
|
---|
| 365 | 2'd1: TxD_data <= hst_q[15:8];
|
---|
| 366 | 2'd2: TxD_data <= hst_q[23:16];
|
---|
| 367 | 2'd3: TxD_data <= hst_q[31:24];
|
---|
| 368 | // 2'd0: TxD_data <= 8'd255;
|
---|
| 369 | // 2'd1: TxD_data <= 8'd0;
|
---|
| 370 | // 2'd2: TxD_data <= 8'd0;
|
---|
| 371 | // 2'd3: TxD_data <= 8'd0;
|
---|
| 372 | endcase
|
---|
| 373 | wr_uart <= 0;
|
---|
| 374 | state1 <= 4'd5;
|
---|
| 375 | end
|
---|
| 376 |
|
---|
| 377 | 5:
|
---|
| 378 | begin
|
---|
| 379 | if (~tx_full)
|
---|
| 380 | begin
|
---|
| 381 | wr_uart <= 1;
|
---|
| 382 | state1 <= 4'd6;
|
---|
| 383 | end
|
---|
| 384 | end
|
---|
| 385 |
|
---|
| 386 | 6:
|
---|
| 387 | begin
|
---|
| 388 | wr_uart <= 0;
|
---|
| 389 | if (&hst_bit_num)
|
---|
| 390 | begin
|
---|
| 391 | hst_bit_num <= 2'd0;
|
---|
| 392 | if (&hst_addr)
|
---|
| 393 | begin
|
---|
| 394 | state1 <= 4'd1;
|
---|
| 395 | end
|
---|
| 396 | else
|
---|
| 397 | begin
|
---|
| 398 | hst_addr <= hst_addr + 12'd1;
|
---|
| 399 | state1 <= 4'd4;
|
---|
| 400 | end
|
---|
| 401 | end
|
---|
| 402 | else
|
---|
| 403 | begin
|
---|
| 404 | hst_bit_num <= hst_bit_num + 2'd1;
|
---|
| 405 | state1 <= 4'd4;
|
---|
| 406 | end
|
---|
| 407 | end
|
---|
| 408 |
|
---|
| 409 |
|
---|
| 410 | 7:
|
---|
| 411 | begin
|
---|
| 412 | // start osc transfer
|
---|
| 413 | rd_uart <= 1'b0;
|
---|
| 414 | osc_addr <= osc_start_addr;
|
---|
| 415 | osc_bit_num <= 1'd0;
|
---|
| 416 | osc_counter <= 10'd0;
|
---|
| 417 | state1 <= 4'd8;
|
---|
| 418 | end
|
---|
| 419 |
|
---|
| 420 | 8:
|
---|
| 421 | begin
|
---|
| 422 | case(osc_bit_num)
|
---|
| 423 | 1'd0: TxD_data <= osc_q[7:0];
|
---|
| 424 | 1'd1: TxD_data <= osc_q[15:8];
|
---|
| 425 | endcase
|
---|
| 426 | wr_uart <= 0;
|
---|
| 427 | state1 <= 4'd9;
|
---|
| 428 | end
|
---|
| 429 |
|
---|
| 430 | 9:
|
---|
| 431 | begin
|
---|
| 432 | if (~tx_full)
|
---|
| 433 | begin
|
---|
| 434 | wr_uart <= 1;
|
---|
| 435 | state1 <= 4'd10;
|
---|
| 436 | end
|
---|
| 437 | end
|
---|
| 438 |
|
---|
| 439 | 10:
|
---|
| 440 | begin
|
---|
| 441 | wr_uart <= 0;
|
---|
| 442 | if (osc_bit_num)
|
---|
| 443 | begin
|
---|
| 444 | osc_bit_num <= 1'd0;
|
---|
| 445 | if (&osc_counter)
|
---|
| 446 | begin
|
---|
| 447 | state1 <= 4'd1;
|
---|
| 448 | end
|
---|
| 449 | else
|
---|
| 450 | begin
|
---|
| 451 | osc_addr <= osc_addr + 10'd1;
|
---|
| 452 | osc_counter <= osc_counter + 10'd1;
|
---|
| 453 | state1 <= 4'd8;
|
---|
| 454 | end
|
---|
| 455 | end
|
---|
| 456 | else
|
---|
| 457 | begin
|
---|
| 458 | osc_bit_num <= osc_bit_num + 1'd1;
|
---|
| 459 | state1 <= 4'd8;
|
---|
| 460 | end
|
---|
| 461 | end
|
---|
| 462 |
|
---|
| 463 | default:
|
---|
| 464 | begin
|
---|
| 465 | // default state is the first one
|
---|
| 466 | state1 <= 4'd1;
|
---|
| 467 | end
|
---|
| 468 | endcase
|
---|
| 469 | end
|
---|
| 470 |
|
---|
| 471 | always @ (posedge adc_dr)
|
---|
| 472 | begin
|
---|
| 473 | case (state2)
|
---|
| 474 | 1:
|
---|
| 475 | begin
|
---|
| 476 | adc_data <= 12'd0;
|
---|
| 477 | state2 <= 4'd2;
|
---|
| 478 | end
|
---|
| 479 |
|
---|
| 480 | 2:
|
---|
| 481 | begin
|
---|
| 482 | adc_data <= 12'd1024;
|
---|
| 483 | state2 <= 4'd3;
|
---|
| 484 | end
|
---|
| 485 |
|
---|
| 486 | 3:
|
---|
| 487 | begin
|
---|
| 488 | adc_data <= 12'd2048;
|
---|
| 489 | state2 <= 4'd4;
|
---|
| 490 | end
|
---|
| 491 |
|
---|
| 492 | 4:
|
---|
| 493 | begin
|
---|
| 494 | adc_data <= 12'd3072;
|
---|
| 495 | state2 <= 4'd5;
|
---|
| 496 | end
|
---|
| 497 |
|
---|
| 498 | 5:
|
---|
| 499 | begin
|
---|
| 500 | adc_data <= 12'd4095;
|
---|
| 501 | state2 <= 4'd1;
|
---|
| 502 | end
|
---|
| 503 |
|
---|
| 504 | default:
|
---|
| 505 | begin
|
---|
| 506 | state2 <= 4'd1;
|
---|
| 507 | end
|
---|
| 508 | endcase
|
---|
| 509 | end
|
---|
| 510 |
|
---|
| 511 | endmodule
|
---|