⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 de2_sd_card_audio.v

📁 SD卡读取音频数据
💻 V
字号:
// --------------------------------------------------------------------
// Copyright (c) 2005 by Terasic Technologies Inc. 
// --------------------------------------------------------------------
//
// Permission:
//
//   Terasic grants permission to use and modify this code for use
//   in synthesis for all Terasic Development Boards and Altera Development 
//   Kits made by Terasic.  Other use of this code, including the selling 
//   ,duplication, or modification of any portion is strictly prohibited.
//
// Disclaimer:
//
//   This VHDL/Verilog or C/C++ source code is intended as a design reference
//   which illustrates how these types of functions can be implemented.
//   It is the user's responsibility to verify their design for
//   consistency and functionality through the use of formal
//   verification methods.  Terasic provides no warranty regarding the use 
//   or functionality of this code.
//
// --------------------------------------------------------------------
//           
//                     Terasic Technologies Inc
//                     356 Fu-Shin E. Rd Sec. 1. JhuBei City,
//                     HsinChu County, Taiwan
//                     302
//
//                     web: http://www.terasic.com/
//                     email: support@terasic.com
//
// --------------------------------------------------------------------
//
// Major Functions:	DE2 SD-Card Music-Player Reference Design
//
// --------------------------------------------------------------------
//
// Revision History :
// --------------------------------------------------------------------
//   Ver  :| Author            :| Mod. Date :| Changes Made:
//   V1.0 :| Johnny Chen       :| 05/08/19  :| Initial Revision
//   V1.1 :| Johnny Chen       :| 05/11/16  :| Add to FLASH Address FL_ADDR[21:20]
// --------------------------------------------------------------------
module DE2_SD_Card_Audio
	(
		//	Onboard Oscilator	 
		OSC_27,
		OSC_50,
		//	Push Button
		KEY,
		//	DPDT Switch
		DPDT_SW,
		//	7-SEG Dispaly
		HEX0,
		HEX1,
		HEX2,
		HEX3,
		HEX4,
		HEX5,
		HEX6,
		HEX7,
		//	LED
		LED_GREEN,
		LED_RED,
		//	UART
		UART_TXD,
		UART_RXD,
		//	SDRAM Interface
		DRAM_DQ,	//	16 Bits
		DRAM_ADDR,	//	12 Bits
		DRAM_LDQM,
		DRAM_UDQM,
		DRAM_WE_N,
		DRAM_CAS_N,
		DRAM_RAS_N,
		DRAM_CS_N,
		DRAM_BA_0,
		DRAM_BA_1,
		DRAM_CLK,
		DRAM_CKE,	
		//	Flash Interface
		FL_DQ,		//	8 Bits
		FL_ADDR,	//	22 Bits
		FL_WE_N,
		FL_RST_N,
		FL_OE_N,
		FL_CE_N,
		//	SRAM Interface
		SRAM_DQ,	//	16 Bits
		SRAM_ADDR,	//	18 Bits
		SRAM_UB_N,
		SRAM_LB_N,
		SRAM_WE_N,
		SRAM_CE_N,
		SRAM_OE_N,
		//	ISP1362 Interface
		OTG_DATA,	//	16 Bits
		OTG_ADDR,	//	2 Bits
		OTG_CS_N,
		OTG_RD_N,
		OTG_WR_N,
		OTG_RST_N,
		OTG_FSPEED,	//	USB Full Speed,	0 = Enable, Z = Disable
		OTG_LSPEED,	//	USB Low Speed, 	0 = Enable, Z = Disable
		OTG_INT0,
		OTG_INT1,
		OTG_DREQ0,
		OTG_DREQ1,
		OTG_DACK0_N,
		OTG_DACK1_N,
		//	Ethernet Interface
		ENET_DATA,
		ENET_CMD,
		ENET_CS_N,
		ENET_WR_N,
		ENET_RD_N,
		ENET_RST_N,
		ENET_INT,
		ENET_CLK,
		//	Audio
		AUD_ADCLRCK,					//	Audio CODEC ADC LR Clock
		AUD_ADCDAT,						//	Audio CODEC ADC Data
		AUD_DACLRCK,					//	Audio CODEC DAC LR Clock
		AUD_DACDAT,						//	Audio CODEC DAC Data
		AUD_BCLK,						//	Audio CODEC Bit-Stream Clock
		AUD_XCK,						//	Audio CODEC Chip Clock
		//	LCD Module 16X2
		LCD_ON,		//	LCD ON/OFF
		LCD_BLON,	//	LCD Back Light ON/OFF
		LCD_RW,
		LCD_EN,
		LCD_RS,
		LCD_DATA,
		//	SD_Card Interface
		SD_DAT,
		SD_DAT3,
		SD_CMD,
		SD_CLK,
		//	I2C
		I2C_DATA,
		I2C_CLK,
		//	PS2
		PS2_DATA,
		PS2_CLK,
		//	TV
		TD_RESET
	);

//	On Board Oscilator
input			OSC_27;
input			OSC_50;
//	Push Button
input	[3:0]	KEY;
//	DPDT Switch
input	[17:0]	DPDT_SW;
//	7-SEG Dispaly
output	[6:0]	HEX0;
output	[6:0]	HEX1;
output	[6:0]	HEX2;
output	[6:0]	HEX3;
output	[6:0]	HEX4;
output	[6:0]	HEX5;
output	[6:0]	HEX6;
output	[6:0]	HEX7;
//	LED
output	[8:0]	LED_GREEN;
output	[17:0]	LED_RED;
//	UART
output			UART_TXD;
input			UART_RXD;
//	SDRAM Interface
inout	[15:0]	DRAM_DQ;	// 16 Bits
output	[11:0]	DRAM_ADDR;	// 12 Bits
output			DRAM_LDQM;
output			DRAM_UDQM;
output			DRAM_WE_N;
output			DRAM_CAS_N;
output			DRAM_RAS_N;
output			DRAM_CS_N;
output			DRAM_BA_0;
output			DRAM_BA_1;
output			DRAM_CLK;
output			DRAM_CKE;
//	Flash Interface
inout	[7:0]	FL_DQ;		//	8 Bits
output	[21:0]	FL_ADDR;	//	22 Bits
output			FL_WE_N;
output			FL_RST_N;
output			FL_OE_N;
output			FL_CE_N;
//	SRAM Interface
inout	[15:0]	SRAM_DQ;	//	16 Bits
output	[17:0]	SRAM_ADDR;	//	18 Bits
output			SRAM_UB_N;
output			SRAM_LB_N;
output			SRAM_WE_N;
output			SRAM_CE_N;
output			SRAM_OE_N;
//	ISP1362 Interface
inout	[15:0]	OTG_DATA;
output	[1:0]	OTG_ADDR;
output			OTG_WR_N;
output			OTG_RD_N;
output			OTG_CS_N;
output			OTG_RST_N;
output			OTG_FSPEED;		//	USB Full Speed,	0 = Enable, Z = Disable
output			OTG_LSPEED;		//	USB Low Speed, 	0 = Enable, Z = Disable
input			OTG_INT0;
input			OTG_INT1;
input			OTG_DREQ0;
input			OTG_DREQ1;
output			OTG_DACK0_N;
output			OTG_DACK1_N;
//	Ethernet Interface
inout	[15:0]	ENET_DATA;
output			ENET_CMD;
output			ENET_CS_N;
output			ENET_WR_N;
output			ENET_RD_N;
output			ENET_RST_N;
input			ENET_INT;
output			ENET_CLK;
//	Audio
output/*inout*/	AUD_ADCLRCK;			//	Audio CODEC ADC LR Clock
input			AUD_ADCDAT;				//	Audio CODEC ADC Data
output/*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
//	LCD Module 16X2
inout	[7:0]	LCD_DATA;
output			LCD_ON;		//	LCD ON/OFF
output			LCD_BLON;	//	LCD Back Light ON/OFF
output			LCD_RW;
output			LCD_EN;
output			LCD_RS;
//	SD_Card Interface
inout			SD_DAT;
inout			SD_DAT3;
inout			SD_CMD;
output			SD_CLK;
//	I2C
inout			I2C_DATA;
inout			I2C_CLK;
//	PS2
input		 	PS2_DATA;
input			PS2_CLK;
//	TV
output			TD_RESET;


//////////////////////////////////////////////////////////
wire	[31:0]	mSEG7_HEX;
wire	[15:0]	DATA_to_OTG;
wire	[15:0]	DATA_to_SRAM;
//	I2C
wire			SCL_OE_N;
wire			SDA_OE_N;
wire			SCL;
wire			SDA;
//	CPU
wire			CPU_RESET;
//	Ethernet
reg				ENET_CLK;
//	Audio
wire			AUD_CTRL_CLK;
wire			AUD_FULL;

always@(posedge OSC_50)	ENET_CLK=~ENET_CLK;

//	16*2 LCD Module
assign	LCD_ON		=	1'b1;	//	LCD ON
assign	LCD_BLON	=	1'b1;	//	LCD Back Light	
assign	FL_RST_N	=	1'b1;
assign	FL_ADDR[21:20]	=	2'b00;	//	Fixed 1M-Byte FLASH

//	I2C Tri-inout
assign	I2C_CLK		=	SCL_OE_N	?	1'bz	:	SCL	;
assign	I2C_DATA	=	SDA_OE_N	?	1'bz	:	SDA	;

//	Set SD Card to SD Mode
assign	SD_DAT3	=	1'b1;

//	Bypress 27 MHz
assign	TD_RESET	=	1'b1;

//	Audio
assign	AUD_ADCLRCK	=	AUD_DACLRCK;
assign	AUD_XCK		=	AUD_CTRL_CLK;


SDRAM_PLL 	PLL1	(.inclk0(OSC_50),.c0(DRAM_CLK));

AUDIO_PLL 	PLL2	(.inclk0(OSC_27),.c0(AUD_CTRL_CLK));

Reset_Delay	rst		(OSC_50,CPU_RESET);

nios_0		u0	(
                // 1) global signals:
                 .clk(OSC_50),
                 .reset_n(CPU_RESET),

                // the_lcd_16207_0
                 .LCD_E_from_the_lcd_16207_0(LCD_EN),
                 .LCD_RS_from_the_lcd_16207_0(LCD_RS),
                 .LCD_RW_from_the_lcd_16207_0(LCD_RW),
                 .LCD_data_to_and_from_the_lcd_16207_0(LCD_DATA),

                // the_SEG7_Display
                 .oSEG0_from_the_SEG7_Display(HEX0),
                 .oSEG1_from_the_SEG7_Display(HEX1),
                 .oSEG2_from_the_SEG7_Display(HEX2),
                 .oSEG3_from_the_SEG7_Display(HEX3),
                 .oSEG4_from_the_SEG7_Display(HEX4),
                 .oSEG5_from_the_SEG7_Display(HEX5),
                 .oSEG6_from_the_SEG7_Display(HEX6),
                 .oSEG7_from_the_SEG7_Display(HEX7),

                // the_ISP1362
                 .OTG_ADDR_from_the_ISP1362(OTG_ADDR),
                 .OTG_CS_N_from_the_ISP1362(OTG_CS_N),
                 .OTG_DACK0_N_from_the_ISP1362(OTG_DACK0_N),
                 .OTG_DACK1_N_from_the_ISP1362(OTG_DACK1_N),
                 .OTG_DATA_to_and_from_the_ISP1362(OTG_DATA),
                 .OTG_DREQ0_to_the_ISP1362(OTG_DREQ0),
                 .OTG_DREQ1_to_the_ISP1362(OTG_DREQ1),
                 .OTG_INT0_to_the_ISP1362(OTG_INT0),
                 .OTG_INT1_to_the_ISP1362(OTG_INT1),
                 .OTG_RD_N_from_the_ISP1362(OTG_RD_N),
                 .OTG_RST_N_from_the_ISP1362(OTG_RST_N),
                 .OTG_WR_N_from_the_ISP1362(OTG_WR_N),
                 .OTG_FSPEED_from_the_ISP1362(OTG_FSPEED),
                 .OTG_LSPEED_from_the_ISP1362(OTG_LSPEED),
                 .iFSPEED_to_the_ISP1362(1'bz),
                 .iLSPEED_to_the_ISP1362(1'bz),

                // the_DM9000A
                 .ENET_CMD_from_the_DM9000A(ENET_CMD),
                 .ENET_CS_N_from_the_DM9000A(ENET_CS_N),
                 .ENET_DATA_to_and_from_the_DM9000A(ENET_DATA),
                 .ENET_INT_to_the_DM9000A(ENET_INT),
                 .ENET_RD_N_from_the_DM9000A(ENET_RD_N),
                 .ENET_RST_N_from_the_DM9000A(ENET_RST_N),
                 .ENET_WR_N_from_the_DM9000A(ENET_WR_N),

                // the_AUD_FULL
                 .in_port_to_the_AUD_FULL(AUD_FULL),

                // the_Audio_0
                 .iCLK_18_4_to_the_Audio_0(AUD_CTRL_CLK),
                 .oAUD_BCK_from_the_Audio_0(AUD_BCLK),
                 .oAUD_DATA_from_the_Audio_0(AUD_DACDAT),
                 .oAUD_LRCK_from_the_Audio_0(AUD_DACLRCK),
                 .oWR_FULL_from_the_Audio_0(AUD_FULL),

                // the_led_green
                 .out_port_from_the_led_green(LED_GREEN),

                // the_led_red
                 .out_port_from_the_led_red(LED_RED),

                // the_switch_pio
                 .in_port_to_the_switch_pio(DPDT_SW),

                // the_button_pio
                 .in_port_to_the_button_pio(KEY),

                // the_SD_CLK
                 .out_port_from_the_SD_CLK(SD_CLK),

                // the_SD_CMD
                 .bidir_port_to_and_from_the_SD_CMD(SD_CMD),

                // the_SD_DAT
                 .bidir_port_to_and_from_the_SD_DAT(SD_DAT),

                // the_sdram_0
                 .zs_addr_from_the_sdram_0(DRAM_ADDR),
                 .zs_ba_from_the_sdram_0({DRAM_BA_1,DRAM_BA_0}),
                 .zs_cas_n_from_the_sdram_0(DRAM_CAS_N),
                 .zs_cke_from_the_sdram_0(DRAM_CKE),
                 .zs_cs_n_from_the_sdram_0(DRAM_CS_N),
                 .zs_dq_to_and_from_the_sdram_0(DRAM_DQ),
                 .zs_dqm_from_the_sdram_0({DRAM_UDQM,DRAM_LDQM}),
                 .zs_ras_n_from_the_sdram_0(DRAM_RAS_N),
                 .zs_we_n_from_the_sdram_0(DRAM_WE_N),

                // the_sram_0
                 .SRAM_ADDR_from_the_sram_0(SRAM_ADDR),
                 .SRAM_CE_N_from_the_sram_0(SRAM_CE_N),
                 .SRAM_DQ_to_and_from_the_sram_0(SRAM_DQ),
                 .SRAM_LB_N_from_the_sram_0(SRAM_LB_N),
                 .SRAM_OE_N_from_the_sram_0(SRAM_OE_N),
                 .SRAM_UB_N_from_the_sram_0(SRAM_UB_N),
                 .SRAM_WE_N_from_the_sram_0(SRAM_WE_N),

                // the_tri_state_bridge_0_avalon_slave
                 .select_n_to_the_cfi_flash_0(FL_CE_N),
                 .tri_state_bridge_0_address(FL_ADDR),
                 .tri_state_bridge_0_data(FL_DQ),
                 .tri_state_bridge_0_readn(FL_OE_N),
                 .write_n_to_the_cfi_flash_0(FL_WE_N),

                // the_I2C_0
                 .scl_pad_i_to_the_I2C_0(I2C_CLK),
                 .scl_pad_o_from_the_I2C_0(SCL),
                 .scl_padoen_o_from_the_I2C_0(SCL_OE_N),
                 .sda_pad_i_to_the_I2C_0(I2C_DATA),
                 .sda_pad_o_from_the_I2C_0(SDA),
                 .sda_padoen_o_from_the_I2C_0(SDA_OE_N),

                // the_uart_0
                 .rxd_to_the_uart_0(UART_RXD),
                 .txd_from_the_uart_0(UART_TXD)

              );

I2C_AV_Config 	u1	(	//	Host Side
						.iCLK(OSC_50),
						.iRST_N(CPU_RESET),
						//	I2C Side
						.I2C_SCLK(I2C_CLK),
						.I2C_SDAT(I2C_DATA)	);

endmodule		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -