?? de2_synthesizer.v
字號:
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
inout AUD_DACLRCK; // Audio CODEC DAC LR Clock
input AUD_ADCDAT; // Audio CODEC ADC Data
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
//////////////////////// GPIO ////////////////////////////////
inout [35:0] GPIO_0; // GPIO Connection 0
inout [35:0] GPIO_1; // GPIO Connection 1
////////////////////////////////////////////////////////////////////
// All inout port turn to tri-state
assign DRAM_DQ = 16'hzzzz;
assign FL_DQ = 8'hzz;
assign SRAM_DQ = 16'hzzzz;
assign SD_DAT = 1'bz;
assign GPIO_1 = 36'hzzzzzzzzz;
assign GPIO_0 = 36'hzzzzzzzzz;
// TV DECODER ENABLE
assign TD_RESET = 1;
// 7-SEG
SEG7_LUT_8 u0 ( HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6,HEX7,31'h00001112 );
// I2C
wire I2C_END;
I2C_AV_Config u7 ( // Host Side
.iCLK ( CLOCK_50 ),
.iRST_N ( KEY[0] ),
.o_I2C_END ( I2C_END ),
// I2C Side
.I2C_SCLK ( I2C_SCLK ),
.I2C_SDAT ( I2C_SDAT )
);
// AUDIO SOUND
wire AUD_CTRL_CLK;
assign AUD_ADCLRCK = AUD_DACLRCK;
assign AUD_XCK = AUD_CTRL_CLK;
// AUDIO PLL
VGA_Audio_PLL u1 (
.areset ( ~I2C_END ),
.inclk0 ( CLOCK_27 ),
.c1 ( AUD_CTRL_CLK )
);
// Music Synthesizer Block //
// TIME & CLOCK Generater //
reg [31:0]VGA_CLK_o;
wire keyboard_sysclk = VGA_CLK_o[11];
wire demo_clock = VGA_CLK_o[18];
assign VGA_CLK = VGA_CLK_o[0];
always @( posedge CLOCK_50 ) VGA_CLK_o = VGA_CLK_o + 1;
// DEMO SOUND //
// DEMO Sound (CH1) //
wire [7:0]demo_code1;
demo_sound1 dd1(
.clock ( demo_clock ),
.key_code( demo_code1 ),
.k_tr ( KEY[1] )
);
// DEMO Sound (CH2) //
wire [7:0]demo_code2;
demo_sound2 dd2(
.clock ( demo_clock ),
.key_code( demo_code2 ),
.k_tr ( KEY[1] )
);
// KeyBoard Scan //
wire [7:0]scan_code;
wire get_gate;
wire key1_on;
wire key2_on;
wire [7:0]key1_code;
wire [7:0]key2_code;
PS2_KEYBOARD keyboard(
.ps2_dat ( PS2_DAT ), //ps2bus data
.ps2_clk ( PS2_CLK ), //ps2bus clk
.sys_clk ( keyboard_sysclk ), //system clock
.reset ( KEY[3] ), //system reset
.reset1 ( KEY[2] ), //keyboard reset
.scandata ( scan_code ), //scan code
.key1_on ( key1_on ), //key1 triger
.key2_on ( key2_on ), //key2 triger
.key1_code( key1_code ), //key1 code
.key2_code( key2_code ) //key2 code
);
////////////Sound Select/////////////
wire [15:0]sound1;
wire [15:0]sound2;
wire [15:0]sound3;
wire [15:0]sound4;
wire sound_off1;
wire sound_off2;
wire sound_off3;
wire sound_off4;
wire [7:0]sound_code1 = ( !SW[9] )? demo_code1 : key1_code ; //SW[9]=0 is DEMO SOUND,otherwise key
wire [7:0]sound_code2 = ( !SW[9] )? demo_code2 : key2_code ; //SW[9]=0 is DEMO SOUND,otherwise key
wire [7:0]sound_code3 = 8'hf0;
wire [7:0]sound_code4 = 8'hf0;
// Staff Display & Sound Output //
wire VGA_R1,VGA_G1,VGA_B1;
wire VGA_R2,VGA_G2,VGA_B2;
assign VGA_R=( VGA_R1 )? 10'h3f0 : 0 ;
assign VGA_G=( VGA_G1 )? 10'h3f0 : 0 ;
assign VGA_B=( VGA_B1 )? 10'h3f0 : 0 ;
staff st1(
// VGA output //
.VGA_CLK ( VGA_CLK ),
.vga_h_sync ( VGA_HS ),
.vga_v_sync ( VGA_VS ),
.vga_sync ( VGA_SYNC ),
.inDisplayArea ( VGA_BLANK ),
.vga_R ( VGA_R1 ),
.vga_G ( VGA_G1 ),
.vga_B ( VGA_B1 ),
// Key code-in //
.scan_code1( sound_code1 ),
.scan_code2( sound_code2 ),
.scan_code3( sound_code3 ), // OFF
.scan_code4( sound_code4 ), // OFF
//Sound Output to Audio Generater//
.sound1( sound1 ),
.sound2( sound2 ),
.sound3( sound3 ), // OFF
.sound4( sound4 ), // OFF
.sound_off1( sound_off1 ),
.sound_off2( sound_off2 ),
.sound_off3( sound_off3 ), //OFF
.sound_off4( sound_off4 ) //OFF
);
///////LED Display////////
assign LEDR[9:6] = { sound_off4,sound_off3,sound_off2,sound_off1 };
assign LEDG[7:0] = scan_code;
// 2CH Audio Sound output -- Audio Generater //
adio_codec ad1 (
// AUDIO CODEC //
.oAUD_BCK ( AUD_BCLK ),
.oAUD_DATA( AUD_DACDAT ),
.oAUD_LRCK( AUD_DACLRCK ),
.iCLK_18_4( AUD_CTRL_CLK ),
// KEY //
.iRST_N( KEY[0] ),
.iSrc_Select( 2'b00 ),
// Sound Control //
.key1_on( ~SW[1] & sound_off1 ),//CH1 ON / OFF
.key2_on( ~SW[2] & sound_off2 ),//CH2 ON / OFF
.key3_on( 1'b0 ), // OFF
.key4_on( 1'b0 ), // OFF
.sound1( sound1 ),// CH1 Freq
.sound2( sound2 ),// CH2 Freq
.sound3( sound3 ),// OFF,CH3 Freq
.sound4( sound4 ),// OFF,CH4 Freq
.instru( SW[0] ) // Instruction Select
);
// LCD
assign LCD_ON = 1'b1;
assign LCD_BLON = 1'b1;
LCD_TEST u5 (
// Host Side
.iCLK ( CLOCK_50 ),
.iRST_N ( KEY[0] & I2C_END ),
// LCD Side
.LCD_DATA( LCD_DATA ),
.LCD_RW ( LCD_RW ),
.LCD_EN ( LCD_EN ),
.LCD_RS ( LCD_RS )
);
endmodule
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -