sys2.v
module sys2(
// Clock Input (50 MHz)
input CLOCK_50,
// Push Buttons
input [3:0] KEY,
// DPDT Switches
input [17:0] SW,
// 7-SEG Displays
output [6:0] HEX0, HEX1, HEX2, HEX3, HEX4, HEX5, HEX6, HEX7,
// LEDs
output [8:0] LEDG, // LED Green[8:0]
output [17:0] LEDR, // LED Red[17:0]
// LCD Module 16X2
inout [7:0] LCD_DATA, // LCD Data bus 8 bits
output LCD_ON, // LCD Power ON/OFF
output LCD_BLON, // LCD Back Light ON/OFF
output LCD_RW, // LCD Read/Write Select, 0 = Write, 1 = Read
output LCD_EN, // LCD Enable
output LCD_RS, // LCD Command/Data Select, 0 = Command, 1 = Data
// SDRAM Interface
inout [15:0] DRAM_DQ, // SDRAM Data bus 16 Bits
output [11:0] DRAM_ADDR, // SDRAM Address bus 12 Bits
output DRAM_LDQM, // SDRAM Low-byte Data Mask
output DRAM_UDQM, // SDRAM High-byte Data Mask
output DRAM_WE_N, // SDRAM Write Enable
output DRAM_CAS_N, // SDRAM Column Address Strobe
output DRAM_RAS_N, // SDRAM Row Address Strobe
output DRAM_CS_N, // SDRAM Chip Select
output DRAM_BA_0, // SDRAM Bank Address 0
output DRAM_BA_1, // SDRAM Bank Address 0
output DRAM_CLK, // SDRAM Clock
output DRAM_CKE, // SDRAM Clock Enable
// GPIO Connections
inout [35:0] GPIO_0, GPIO_1
);
// set all inout ports to tri-state
assign DRAM_DQ = 16'hzzzz;
assign GPIO_0 = 36'hzzzzzzzzz;
assign GPIO_1 = 36'hzzzzzzzzz;
wire RST;
assign RST = KEY[0];
// Connect dip switches to red LEDS
assign LEDR[17:0] = SW[17:0];
// LCD ON
assign LCD_ON = 1'b1;
assign LCD_BLON = 1'b1;
wire [31:0] inport, outport;
assign inport[20:18] = KEY[3:1];
assign inport[17:0] = SW;
assign inport[31:21] = 0;
//assign outport = inport;
// map to 7-segment displays
wire [6:0] dig1, dig2, dig3, dig4, dig5, dig6, dig7;
hex_7seg dsp7(outport[31:28],dig7);
hex_7seg dsp6(outport[27:24],dig6);
hex_7seg dsp5(outport[23:20],dig5);
hex_7seg dsp4(outport[19:16],dig4);
hex_7seg dsp3(outport[15:12],dig3);
hex_7seg dsp2(outport[11:8],dig2);
hex_7seg dsp1(outport[7:4],dig1);
hex_7seg dsp0(outport[3:0],HEX0);
// blank leading zeros
wire [6:0] blank = 7'b111_1111;
wire [7:0] leading;
assign leading[7] = (outport[31:28]==4'b0000);
assign leading[6] = (outport[27:24]==4'b0000) & leading[7];
assign leading[5] = (outport[23:20]==4'b0000) & leading[6];
assign leading[4] = (outport[19:16]==4'b0000) & leading[5];
assign leading[3] = (outport[15:12]==4'b0000) & leading[4];
assign leading[2] = (outport[11:8]==4'b0000) & leading[3];
assign leading[1] = (outport[7:4]==4'b0000) & leading[2];
assign leading[0] = 1'b0;
assign HEX7 = leading[7]? blank: dig7;
assign HEX6 = leading[6]? blank: dig6;
assign HEX5 = leading[5]? blank: dig5;
assign HEX4 = leading[4]? blank: dig4;
assign HEX3 = leading[3]? blank: dig3;
assign HEX2 = leading[2]? blank: dig2;
assign HEX1 = leading[1]? blank: dig1;
sdram_pll pll(
.inclk0(CLOCK_50),
.c0(DRAM_CLK)
);
processor2 our_cpu(
// 1) global signals:
.clk(CLOCK_50),
.reset_n(RST),
// the_lcd
.LCD_E_from_the_lcd(LCD_EN),
.LCD_RS_from_the_lcd(LCD_RS),
.LCD_RW_from_the_lcd(LCD_RW),
.LCD_data_to_and_from_the_lcd(LCD_DATA),
// the_sdram
.zs_addr_from_the_sdram(DRAM_ADDR),
.zs_ba_from_the_sdram({DRAM_BA_1,DRAM_BA_0}),
.zs_cas_n_from_the_sdram(DRAM_CAS_N),
.zs_cke_from_the_sdram(DRAM_CKE),
.zs_cs_n_from_the_sdram(DRAM_CS_N),
.zs_dq_to_and_from_the_sdram(DRAM_DQ),
.zs_dqm_from_the_sdram({DRAM_UDQM,DRAM_LDQM}),
.zs_ras_n_from_the_sdram(DRAM_RAS_N),
.zs_we_n_from_the_sdram(DRAM_WE_N),
// the_pio_0
.in_port_to_the_pio_0(inport),
.out_port_from_the_pio_0(outport)
);
// output [ 31: 0] out_port_from_the_pio_0;
// input [ 31: 0] in_port_to_the_pio_0;
endmodule
Maintained by John Loomis, last updated 20 June 2007