|
这边顺便简单提供一验证上层, 可直接在 DE2 上测试结果并使用 SignalTapII 来看讯号…
至于pin assignment 可直接至友晶科技的网站上下载 TV 的 project 来使用, 同样 七段显示器也从其范例可以找到… 
module DE2_TV
(
... // 同TV 的 project
);
//===========================================================================
// PARAMETER declarations
//===========================================================================
//===========================================================================
// PORT declarations
//===========================================================================
//////////////////////// Clock Input ////////////////////////
input OSC_27; // 27 MHz
input OSC_50; // 50 MHz
input EXT_CLOCK; // External Clock
//////////////////////// Push Button ////////////////////////
input [3:0] KEY; // Button[3:0]
//////////////////////// DPDT Switch ////////////////////////
input [17:0] DPDT_SW; // DPDT Switch[17:0]
//////////////////////// 7-SEG Dispaly ////////////////////////
output [6:0] HEX0; // Seven Segment Digital 0
output [6:0] HEX1; // Seven Segment Digital 1
output [6:0] HEX2; // Seven Segment Digital 2
output [6:0] HEX3; // Seven Segment Digital 3
output [6:0] HEX4; // Seven Segment Digital 4
output [6:0] HEX5; // Seven Segment Digital 5
output [6:0] HEX6; // Seven Segment Digital 6
output [6:0] HEX7; // Seven Segment Digital 7
//////////////////////////// LED ////////////////////////////
output [8:0] LED_GREEN; // LED Green[8:0]
output [17:0] LED_RED; // LED Red[17:0]
//////////////////////////// UART ////////////////////////////
output UART_TXD; // UART Transmitter
input UART_RXD; // UART Receiver
//////////////////////////// IRDA ////////////////////////////
output IRDA_TXD; // IRDA Transmitter
input IRDA_RXD; // IRDA Receiver
/////////////////////// 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
//////////////////////// Flash Interface ////////////////////////
inout [7:0] FL_DQ; // FLASH Data bus 8 Bits
output [21:0] FL_ADDR; // FLASH Address bus 22 Bits
output FL_WE_N; // FLASH Write Enable
output FL_RST_N; // FLASH Reset
output FL_OE_N; // FLASH Output Enable
output FL_CE_N; // FLASH Chip Enable
//////////////////////// SRAM Interface ////////////////////////
inout [15:0] SRAM_DQ; // SRAM Data bus 16 Bits
output [17:0] SRAM_ADDR; // SRAM Address bus 18 Bits
output SRAM_UB_N; // SRAM High-byte Data Mask
output SRAM_LB_N; // SRAM Low-byte Data Mask
output SRAM_WE_N; // SRAM Write Enable
output SRAM_CE_N; // SRAM Chip Enable
output SRAM_OE_N; // SRAM Output Enable
//////////////////// ISP1362 Interface ////////////////////////
inout [15:0] OTG_DATA; // ISP1362 Data bus 16 Bits
output [1:0] OTG_ADDR; // ISP1362 Address 2 Bits
output OTG_CS_N; // ISP1362 Chip Select
output OTG_RD_N; // ISP1362 Write
output OTG_WR_N; // ISP1362 Read
output OTG_RST_N; // ISP1362 Reset
output OTG_FSPEED; // USB Full Speed, 0 = Enable, Z = Disable
output OTG_LSPEED; // USB Low Speed, 0 = Enable, Z = Disable
input OTG_INT0; // ISP1362 Interrupt 0
input OTG_INT1; // ISP1362 Interrupt 1
input OTG_DREQ0; // ISP1362 DMA Request 0
input OTG_DREQ1; // ISP1362 DMA Request 1
output OTG_DACK0_N; // ISP1362 DMA Acknowledge 0
output OTG_DACK1_N; // ISP1362 DMA Acknowledge 1
//////////////////// 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
//////////////////// SD Card Interface ////////////////////////
inout SD_DAT; // SD Card Data
inout SD_DAT3; // SD Card Data 3
inout SD_CMD; // SD Card Command Signal
output SD_CLK; // SD Card Clock
//////////////////////// I2C ////////////////////////////////
inout I2C_SDAT; // I2C Data
output I2C_SCLK; // I2C Clock
//////////////////////// PS2 ////////////////////////////////
input PS2_DAT; // PS2 Data
input PS2_CLK; // PS2 Clock
//////////////////// USB JTAG link ////////////////////////////
input TDI; // CPLD -> FPGA (data in)
input TCK; // CPLD -> FPGA (clk)
input TCS; // CPLD -> FPGA (CS)
output TDO; // FPGA -> CPLD (data out)
//////////////////////// VGA ////////////////////////////
output VGA_CLK; // VGA Clock
output VGA_HS; // VGA H_SYNC
output VGA_VS; // VGA V_SYNC
output VGA_BLANK; // VGA BLANK
output VGA_SYNC; // VGA SYNC
output [9:0] VGA_R; // VGA Red[9:0]
output [9:0] VGA_G; // VGA Green[9:0]
output [9:0] VGA_B; // VGA Blue[9:0]
//////////////// Ethernet Interface ////////////////////////////
inout [15:0] ENET_DATA; // DM9000A DATA bus 16Bits
output ENET_CMD; // DM9000A Command/Data Select, 0 = Command, 1 = Data
output ENET_CS_N; // DM9000A Chip Select
output ENET_WR_N; // DM9000A Write
output ENET_RD_N; // DM9000A Read
output ENET_RST_N; // DM9000A Reset
input ENET_INT; // DM9000A Interrupt
output ENET_CLK; // DM9000A Clock 25 MHz
//////////////////// Audio CODEC ////////////////////////////
inout AUD_ADCLRCK; // Audio CODEC ADC LR Clock
input AUD_ADCDAT; // Audio CODEC ADC Data
inout AUD_DACLRCK; // Audio CODEC DAC LR Clock
output AUD_DACDAT; // Audio CODEC DAC Data
inout AUD_BCLK; // Audio CODEC Bit-Stream Clock
output AUD_XCK; // Audio CODEC Chip Clock
//////////////////// TV Devoder ////////////////////////////
input [7:0] TD_DATA; // TV Decoder Data bus 8 bits
input TD_HS; // TV Decoder H_SYNC
input TD_VS; // TV Decoder V_SYNC
output TD_RESET; // TV Decoder Reset
input TD_CLK; // TV Decoder CLOCK
//////////////////////// GPIO ////////////////////////////////
inout [35:0] GPIO_0; // GPIO Connection 0
inout [35:0] GPIO_1; // GPIO Connection 1
////////////////////////////////////////////////////////////////////
wire [3:0] clk1_set_rd, clk2_set_rd, clk3_set_rd;
wire max_sclk, max_sdat;
reg [2:0] button2_d, button3_d;
// Enable TV Decoder
assign TD_RESET = 1'b1;
always @ (posedge OSC_50)
begin
button2_d <= {button2_d[1:0], KEY[2]};
button3_d <= {button3_d[1:0], KEY[3]};
end
ext_pll_ctrl u_ext_pll_ctrl
(
// system input
.osc_50(OSC_50),
.rstn(KEY[0]),
// device 1
.clk1_set_wr(DPDT_SW[3:0]),
.clk1_set_rd(clk1_set_rd),
// device 2
.clk2_set_wr(DPDT_SW[7:4]),
.clk2_set_rd(clk2_set_rd),
// device 3
.clk3_set_wr(DPDT_SW[11:8]),
.clk3_set_rd(clk3_set_rd),
// setting trigger
.conf_wr(button3_d[2] && !button3_d[1]), // 1T 50MHz
.conf_rd(button2_d[2] && !button2_d[1]), // 1T 50MHz
// status
.conf_ready(),
.rd_data_ready(), // 1T 50MHz
// 2-wire interface
.max_sclk(max_sclk),
.max_sdat(max_sdat));
ext_pll_slave u_ext_pll_slave
(
// system input
.osc_50(OSC_50),
.rstn(KEY[0]),
// 2-wire interface
.max_sclk(max_sclk),
.max_sdat(max_sdat),
// device 1 output
.clk1_pr(),
.clk1_od(),
.clk1_os(),
.clk1_ce(),
.clk1_rstn(),
// device 2 output
.clk2_pr(),
.clk2_od(),
.clk2_os(),
.clk2_ce(),
.clk2_rstn(),
// device 3 output
.clk3_pr(),
.clk3_od(),
.clk3_os(),
.clk3_ce(),
.clk3_rstn());
// 7 segment LUT
SEG7_LUT_8 u0
( .oSEG0(HEX0),
.oSEG1(HEX1),
.oSEG2(HEX2),
.oSEG3(HEX3),
.oSEG4(HEX4),
.oSEG5(HEX5),
.oSEG6(HEX6),
.oSEG7(HEX7),
.iDIG({clk3_set_rd,clk2_set_rd,clk1_set_rd}) );
endmodule |
|