




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章 DE2平台应用 第第4章章DE2平台应用平台应用 4.1 DE2平台内嵌的平台内嵌的USB Blaster及及FPGA配置配置4.2 音频编音频编/解码解码 4.3 使用使用SDRAM及及SRAM 4.4 视频视频D/A转换器转换器 4.5 彩色彩色LCM显示器显示器 4.6 用用DE2平台实现视频解码平台实现视频解码 4.7 USB OTG 4.8 网络接口网络接口 4.9 RS232接口接口 4.10 DE2控制面板控制面板 4.11 DE2高级应用范例高级应用范例 4.12 LCM及及CIS在在DE2平台上的应用范例平台上的应用范例 第4章 DE2平台应用 4.1 DE2平台内嵌
2、的平台内嵌的USB Blaster及及FPGA配置配置Cyclone系列FPGA支持AS、PS和JTAG等三种配置模式,DE2平台上集成了USB Blaster,可以为EP2C35提供两种配置模式:JTAG模式和AS(主动串行)模式。当SW19置于运行位置时,可通过JTAG模式对FPGA进行配置。JTAG模式不支持配置数据的压缩。JTAG模式配置完成后,FPGA自动按新的配置工作,但系统重新上电后,FPGA仍然自动从EPCS16中读取配置数据来配置FPGA。第4章 DE2平台应用 使用JTAG模式配置FPGA的步骤如下:(1) 打开DE2平台电源。(2) 用USB电缆通过DE2的USB Bla
3、ster接口(J9)将DE2平台与电脑相连。(3) 将SW19置于RUN。(4) 在Quartus中或NiosIDE中指定SOF文件并用JTAG模式配置FPGA。AS模式下配置FPGA的步骤如下:(1) 打开DE2平台电源。(2) 用USB电缆通过DE2的USB Blaster接口(J9)将DE2平台与电脑相连。(3) 将SW19置于PROG。(4) 在Quartus中指定POF文件并用AS模式对EPCS16编程。(5) 将SW19置于RUN,系统重新上电,FPGA自动从EPCS16中读取配置数据,对FPGA进行配置。第4章 DE2平台应用 4.2 音频编音频编/解码解码4.2.1 音频编音频
4、编/解码硬件芯片解码硬件芯片WM8731DE2的音频输入/输出由Wolfson公司的低功耗立体声音24位音频编/解码芯片WM8731完成。WM8731的音频采样速率为896kHz可调;提供2线与3线两种与主控制器的接口方式;支持四种音频数据格式:I2S模式、左对齐模式、右对齐模式和DSP模式。第4章 DE2平台应用 WM8731包含了线路输入、麦克风输入及耳机输出。两路线路输入RLINEIN和LLINEIN能以1.5dB的步距在+1234.5dB范围内进行对数音量调节,完成A/D转换后,还可以进行高通数字滤波,有效去除输入中的直流成分。一路麦克风输入可以在634dB范围内进行音量调节。这三路模
5、拟输入都有单独的静音功能。D/A转换器输出、线路输入旁路及麦克风输入经过侧音电路后可相加作为输出,可以直接驱动线路输出(LOUT和ROUT),也可以通过耳机放大器输出,以驱动耳机(RHPOUT和LHPOUT)。耳机放大电路的增益可以在+673dB范围内以1dB步距进行调整。DE2音频部分电路如图4.2所示。DE2平台上的LINEOUT(J3)接在经过耳机放大器放大的耳机输出上,可以直接驱动耳机。LINEIN(J2)经过隔直电容输入,而MICIN(J1)则直接输入。第4章 DE2平台应用 图4.2 DE2音频部分电路第4章 DE2平台应用 WM8731的MODE脚接地,选择了2线控制器接口,控制
6、器通过I2C总线控制WM8731,图中的I2C_SCLK和I2C_SDAT接口是从FPGA引出的I2C总线,与视频解码器共用控制总线。2线模式下,通过引脚CSB选择WM8731在I2C总线上的地址,若CSB引脚接地,则读地址为0 x34,写地址为0 x35。总线数据B15:0中,B15:9是WM8731中控制寄存器的地址,B8:0是寄存器中的数值。WM8731寄存器的地址分配及定义如表4.1所示。第4章 DE2平台应用 表 4.1 WM8731 的寄存器的地址分配及定义 寄存器地址 位 符 号 缺省值 定 义 4:0 LINVOL4:0 10111 (0 dB) 线路输入左通道音量控制 111
7、1:+12 dB,1.5 dB/LSB;0000:?34.5 dB 7 LINMUTE 1 线路输入左通道静音;1=静音;0=取消静音 0000000 线路输入 左通道控制 8 LRINBOTH 0 用左声道参数控制右声道装载控制 1:同时装载 RINVOL4:0=LINVOL4:0, RINMUTE=LINMUTE 0:禁止同时装载 4:0 RINVOL4:0 10111 (0 dB) 线路输入右通道音量控制 1111:+12 dB,1.5 dB/LSB;0000:?34.5 dB 7 RINMUTE 1 线路输入右通道静音,1=静音;0=取消静音 0000001 线路输入 右通道控制 8
8、RLINBOTH 0 用右声道参数控制左声道装载控制 1:同时装载 LINVOL4:0=RINVOL4:0, LINMUTE=RINMUTE 0:禁止同时装载 第4章 DE2平台应用 6:0 LHPVOL 6:0 1111001 (0 dB) 左 通 道 耳 机 输 出 音 量 控 制 , 1111111=+6 dB ,0110000=?73 dB,00000000101111=静音 7 LZCEN 0 左通道过零检测使能, 1=使用过零检测, 0=禁止过零检测 0000010 左通道耳机输出参数 8 LRHPBOTH 0 1:允许用左通道耳机参数控制右通道耳机输出 0:禁止用左通道耳机参数控
9、制右通道耳机输出 6:0 RHPVOL 6:0 1111001 (0 dB) 右 通 道 耳 机 输 出 音 量 控 制 , 1111111=+6 dB ,0110000=?73 dB,00000000101111=静音 7 RZCEN 0 右通道过零检测使能, 1=使用过零检测, 0=禁止过零检测 0000011 右通道耳机输出参数 8 RLHPBOTH 0 1:允许用右通道耳机参数控制左通道耳机输出 0:禁止用右通道耳机参数控制左通道耳机输出 第4章 DE2平台应用 0 MICBOOST 0 麦克风输入电平增强控制,1=允许增强, 0=禁止增强 1 MUTEMIC 1 麦克风输入对 A/D
10、 转换器静音,1=静音,0=取消 静音 2 INSEL 0 A/D 转换器输入选择,1=麦克风输入作为 A/D 转换器输入,0=用线路输入作为 A/D 转换器输入 3 BYPASS 1 旁路开关,1=允许旁路,0=禁止旁路 4 D/A 转换器SEL 0 D/A 转换器选择, 1=选择 D/A 转换器, 0=不选择 D/A转换器 5 SIDETONE 0 侧音开关,1=使用侧音,0=禁止侧音 0000100 模拟音频 路径控制 7:6 SIDEATT1:0 00 侧音衰减控制,11=? 15 dB,10=? 12 dB, 01=?9 dB,00=?6 dB 第4章 DE2平台应用 0 A/D 转
11、换器HPD 0 A/D 转换器高通滤波器使能,0=使用高通滤波器,1=不使用高通滤波器 2:1 DEEMP1:0 00 去加重控制,11=48 kHz,10=44.1 kHz, 01=32 kHz,00=禁止去加重 3 D/A 转换器MU 1 D/A 转换器软静音控制,1=使用软静音,0=禁止软 静音 0000101 数字音频 路径控制 4 HPOR 0 使用高通滤波器是否保存偏移,1=保存偏移,0=清除偏移 0 LINEINPD 1 线路输入掉电 1 MICPD 1 麦克风输入掉电 2 A/D 转换器 PD 1 A/D 转换器掉电 3 D/A 转换器 PD 1 D/A 转换器掉电 4 OUT
12、PD 1 线路输出掉电 5 OSCPD 0 振荡器掉电 6 CLKOUTPD 0 CLOCKOUT 掉电 0000110 掉电控制 1=打开 该功能 0=禁止 该功能 7 POWEROFF 1 关闭设备电源 第4章 DE2平台应用 1:0 FORMAT1:0 10 音频格式选择,11=DSP 模式,10=I2S 模式,01=MSB 在先左对齐模式,00=MSB 在先右对齐模式 3:2 IWL1:0 10 输入音频位长度选择, 11=32 位,10=24 位,01=20位,00=16 位 4 LRP 0 D/A 转换器 LRC 相位控制 5 LRSWAP 0 D/A 转换器左右时钟交换控制 6
13、MS 0 主从模式选择,1=主模式,0=从模式 0000111 数字音频 格式控制 7 BCLKINV 0 位时钟反相,1=BCLK 反相,0=BCLK 不反相 0 USB/NORMAL 0 模式选择:1=USB 模式(250/272fs)*,0=普通模式(256/384fs) 1 BOSR 0 基本过采样速率设定, USB 模式:0=252fs,1=272fs 普通模式:0=256fs,1=384fs 5:2 SR3:0 0000 A/D 转换器及 D/A 转换器采样速率控制 6 CLKDIV2 0 核心时钟分频控制,1=核心时钟频率由 MCLK 经二分频得到,0=MCLK 作为核心时钟频率
14、 0001000 采样控制 7 CLKODIV2 0 CLKOUT 分频控制,1=核心时钟频率二分频得到CLKOUT,0=核心频率作为 CLKOUT 第4章 DE2平台应用 0001001 数字音频接口激活控制 0 ACTIVE 0 激活数字音频接口,0=禁止数字音频接口,1=激活数字音频接口 0001011 寄存器复位 8:0 RESET Not Reset 向这个寄存器中写入 00000000 可使 WM8731 复位 *注:fs为音频采样频率。 第4章 DE2平台应用 图4.3为WM8731 I2C总线的时序。图4.3 WM8731 I2C总线的时序 第4章 DE2平台应用 4.2.2
15、WM8731控制电路的实现控制电路的实现对WM8731的控制通过I2C总线来实现,代码4.1是用Verilog HDL实现I2C控制器的参考代码。本例中只实现了I2C写数据,而没有实现完整的I2C控制器。在这个I2C控制器中,输入CLOCK是I2C控制器的时钟输入,在对这个I2C控制器进行例化时,要提供一个满足I2C标准的时钟。I2C控制器每次传输24位数据,前8位是从设备地址SLAVE_ ADDR,接下来8位是从设备的寄存器地址SUB_ADDR,最后8位是数据。WM8731的I2C通信数据格式中有7位寄存器地址和9位数据,与I2C控制器的数据格式定义不一致,实际传输时,SUB_ ADDR的高
16、7位为寄存器地址,最后1位是9位数据的最高位。第4章 DE2平台应用 本例中,I2C控制器使用33个I2C时钟周期完成1次传输24位数据。第1个时钟周期用于初始化控制器,第2、3个周期用于启动传输,第430个周期用于传输数据(其中包含24位数据和3个ACK),最后3个周期用以停止传输。控制器中使用了一个6位计数器SD_COUNTER对传输周期计数。在开始传输之前与终止传输之后,I2C_SCLK信号都应该保持高电平。I2C的起始条件(START)与终止条件(STOP)由I2C_SCLK与I2C_SDAT配合完成,在代码中增加了一个1位寄存器SCLK,用以产生START条件和STOP条件。在STA
17、RT之前、STOP之后,SCLK=1;产生START条件之后,至产生STOP条件之前,SCLK=0。数据传输期间,I2C_SCLK由CLOCK提供。第4章 DE2平台应用 代码4.1 I2C控制器代码。module I2C_Controller (CLOCK, /I2C控制器时钟输入I2C_SCLK,/I2C总线时钟信号输出 I2C_SDAT,/I2C总线数据信号I2C_DATA,/要传输的数据DATA:SLAVE_ADDR,SUB_ADDR,DATAGO, /启动传输END, /传输结束标志ACK, /ACK信号输出RESET, /I2C控制器复位信号/以下信号为测试信号SD_COUNTER
18、, /I2C数据发送计数器SDO /I2C控制器发送的串行数据);第4章 DE2平台应用 input CLOCK;input 23:0I2C_DATA;input GO;input RESET;input W_R; inout I2C_SDAT;output I2C_SCLK;output END;output ACK;output 5:0 SD_COUNTER; /I2C数据发送计数器output SDO; /I2C控制器发送的串行数据第4章 DE2平台应用 reg SDO;reg SCLK;reg END;reg 23:0SD;reg 5:0SD_COUNTER;wire I2C_SCLK
19、=SCLK | ( (SD_COUNTER = 4) & (SD_COUNTER =30)? CLOCK :0 );wire I2C_SDAT=SDO?1bz:0 ; /如果输出数据为1,I2C_SDAT设为高阻reg ACK1,ACK2,ACK3;wire ACK=ACK1 | ACK2 |ACK3; /ACK信号第4章 DE2平台应用 always (negedge RESET or posedge CLOCK ) beginif (!RESET) begin SCLK=1;SDO=1; ACK1=0;ACK2=0;ACK3=0; END=1; endelsecase (SD_CO
20、UNTER)6d0 : begin ACK1=0 ;ACK2=0 ;ACK3=0 ; END=0; SDO=1; SCLK=1;end/I2C START6d1 : begin SD=I2C_DATA;SDO=0;end6d2 : SCLK=0;第4章 DE2平台应用 /发送从设备地址6d3 : SDO=SD23;6d4 : SDO=SD22;6d5 : SDO=SD21;6d6 : SDO=SD20;6d7 : SDO=SD19;6d8 : SDO=SD18;6d9 : SDO=SD17;6d10 : SDO=SD16;6d11 : SDO=1b1;/ACK第4章 DE2平台应用 /发送从设
21、备寄存器地址6d12 : begin SDO=SD15; ACK1=I2C_SDAT; end6d13 : SDO=SD14;6d14 : SDO=SD13;6d15 : SDO=SD12;6d16 : SDO=SD11;6d17 : SDO=SD10;6d18 : SDO=SD9;6d19 : SDO=SD8;6d20 : SDO=1b1;/ACK第4章 DE2平台应用 /发送数据6d21 : begin SDO=SD7; ACK2=I2C_SDAT; end6d22 : SDO=SD6;6d23 : SDO=SD5;6d24 : SDO=SD4;6d25 : SDO=SD3;6d26 :
22、SDO=SD2;6d27 : SDO=SD1;6d28 : SDO=SD0;6d29 : SDO=1b1;/ACK/I2C STOP 6d30 : begin SDO=1b0;SCLK=1b0; ACK3=I2C_SDAT; end 6d31 : SCLK=1b1; 6d32 : begin SDO=1b1; END=1; end endcaseendendmodule第4章 DE2平台应用 代码4.2是音频编/解码器配置的参考设计。模块I2C_Audio_ Config的时钟输入为DE2平台上的50MHz时钟,I2C控制器时钟为20kHz,由50MHz时钟分频得到。音频编/解码器配置数据存储
23、在查找表LUT_DATA中,LUT_ DATA数据为16位,包括了WM8731的寄存器地址和寄存器数据,共对10个寄存器的内容进行配置,配置时逐个写入寄存器的值,寄存器索引代码为LUT_INDEX。每个寄存器的配置分为三步,并用mSetup_ST表示当前进行到了哪一步。第一步准备数据,将8位的从设备地址与LUT_DATA合并为24位数据mI2C_ DATA,并将mI2C_GO置1,启动I2C传输;第二步检测传输结束信号,如果检测到传输结束(mI2C_END=1),但ACK信号不正常,则返回第一步,重新发送数据;如果检测到传输结束且ACK信号正常,则进入第三步,将寄存器索引LUT_INDEX加1
24、,准备下一个数据的传输。第4章 DE2平台应用 代码4.2 音频编/解码器配置代码。module I2C_Audio_Config (iCLK, /时钟输入iRST_N,/复位信号I2C_SCLK,/I2C总线时钟信号输出I2C_SDAT);/I2C总线数据信号inputiCLK;inputiRST_N;output I2C_SCLK;inoutI2C_SDAT;第4章 DE2平台应用 / 内部寄存器及连线reg15:0 mI2C_CLK_DIV;reg23:0 mI2C_DATA;regmI2C_CTRL_CLK;regmI2C_GO;wiremI2C_END;wiremI2C_ACK;re
25、g15:0 LUT_DATA;reg5:0LUT_INDEX;reg3:0mSetup_ST;/时钟参数parameterCLK_Freq=50000000;/输入的系统时钟50MHzparameterI2C_Freq=20000;/I2C总线时钟20kHz第4章 DE2平台应用 /存储音频编/解码器配置数据的查找表容量parameterLUT_SIZE=10;/音频编/解码器配置数据索引parameterSET_LIN_L=0;parameterSET_LIN_R=1;parameterSET_HEAD_L=2;parameterSET_HEAD_R=3;parameterA_PATH_CT
26、RL=4;parameterD_PATH_CTRL=5;parameterPOWER_ON=6;parameterSET_FORMAT=7;parameterSAMPLE_CTRL=8;parameterSET_ACTIVE=9;/50MHz时钟分频得到20kHz的I2C控制时钟/always(posedge iCLK or negedge iRST_N)第4章 DE2平台应用 beginif(!iRST_N)beginmI2C_CTRL_CLK=0;mI2C_CLK_DIV=0;endelsebeginif( mI2C_CLK_DIV (CLK_Freq/I2C_Freq) )mI2C_CL
27、K_DIV=mI2C_CLK_DIV+1;elsebeginmI2C_CLK_DIV=0;mI2C_CTRL_CLK=mI2C_CTRL_CLK;endendend第4章 DE2平台应用 /例化I2C控制器/I2C_Controller u0(.CLOCK(mI2C_CTRL_CLK),/I2C控制器工作时钟.I2C_SCLK(I2C_SCLK),/I2C总线时钟信号 .I2C_SDAT(I2C_SDAT),/I2C总线数据信号.I2C_DATA(mI2C_DATA),/DATA:SLAVE_ADDR,SUB_ADDR,DATA.GO(mI2C_GO), /启动传输.END(mI2C_END)
28、,/传输结束标志.ACK(mI2C_ACK),/ACK.RESET(iRST_N);第4章 DE2平台应用 /配置过程控制/always(posedge mI2C_CTRL_CLK or negedge iRST_N)beginif(!iRST_N)/复位beginLUT_INDEX =0;mSetup_ST=0;mI2C_GO=0;endelse第4章 DE2平台应用 beginif(LUT_INDEXLUT_SIZE)begincase(mSetup_ST)0:begin/第一步:准备数据,启动传输mI2C_DATA =8h34,LUT_DATA;mI2C_GO=1;mSetup_ST=1
29、;end第4章 DE2平台应用 1:beginif(mI2C_END)/第二步:检验传输是否正常结束beginif(!mI2C_ACK)mSetup_ST=2;elsemSetup_ST=0;mI2C_GO=0;endend第4章 DE2平台应用 2:begin/传输结束,改变LUT_INDEX的值,准备传输下一个数据LUT_INDEX=LUT_INDEX+1;mSetup_ST=0;endendcase end endend/配置数据查找表/always第4章 DE2平台应用 begincase(LUT_INDEX)SET_LIN_L: LUT_DATA=16h001A; SET_LIN_R
30、: LUT_DATA=16h021A; SET_HEAD_L: LUT_DATA=16h047B; SET_HEAD_R: LUT_DATA=16h067B; A_PATH_CTRL: LUT_DATA=16h08F8; D_PATH_CTRL: LUT_DATA=16h0A06;POWER_ON: LUT_DATA=16h0C00;SET_FORMAT: LUT_DATA=16h0E01;SAMPLE_CTRL: LUT_DATA=16h1002;SET_ACTIVE: LUT_DATA=16h1201;endcaseendendmodule第4章 DE2平台应用 4.2.3 用用WM873
31、1 D/A转换器产生正弦波转换器产生正弦波可以将WM8731的工作模式配置成主模式或从模式。主模式工作时,由WM8731控制数字音频数据接口的时序,从模式工作时WM8731响应来自音频数据接口的时序。WM8731的音频数据格式有四种模式:左对齐、右对齐、I2S及DSP模式。与音频数据传输有关的引脚如表4.2所示。第4章 DE2平台应用 表 4.2 与音频数据传输有关的引脚 类 型 名 称 主模式 从模式 含 义 BCLK 输出 输入 数字音频位时钟 A/D 转换器 LRC 输出 输入 A/D 转换器采样速率左/右时钟 A/D 转换器 DAT 输出 输出 A/D 转换器数字音频数据输出 D/A
32、转换器 LRC 输出 输入 D/A 转换器采样速率左/右时钟 D/A 转换器 DAT 输入 输入 D/A 转换器数字音频数据输入 第4章 DE2平台应用 音频数据传输是串行传输,A/D转换器LRC(或D/A转换器LRC)提供左/右声道的同步信号,也确定了采样速率,其频率即为采样频率,BCLK是数字音频位时钟,提供位同步信号。第4章 DE2平台应用 左对齐数据格式的时序如图4.4(a)所示,数据的MSB在D/A转换器LRC或A/D转换器LRC发生跳变之后的第一个BCLK的上升沿有效。右对齐数据格式的时序如图4.4(b)所示,数据的MSB在D/A转换器LRC或A/D转换器LRC发生跳变之前的第n个
33、BCLK的上升沿有效,其中n为数据位数。I2S模式数据格式的时序如图4.4(c)所示,数据的MSB在D/A转换器LRC或A/D转换器LRC发生跳变之后的第二个BCLK的上升沿有效。DSP模式数据格式的时序如图4.4(d)所示,左声道数据的MSB在D/A转换器LRC或A/D转换器LRC发生正跳变之后的第一个或第二个(由LRP确定)BCLK的上升沿有效,右声道的数据紧随左声道数据之后。第4章 DE2平台应用 第4章 DE2平台应用 图4.4 WM8731的音频数据接口时序(a) 左对齐;(b) 右对齐;(c) I2S模式;(d) DSP模式 第4章 DE2平台应用 代码4.3是用WM8731产生正
34、弦波。WM8731工作在从模式,数字音频接口的时序由FPGA产生。代码4.3 用WM8731产生正弦波。module AUDIO_D/A转换器 (/数据音频输出引脚oAUD_BCK,oAUD_DATA,oAUD_LRCK,/控制信号iCLK_18_4,iRST_N);第4章 DE2平台应用 /音频信号参数parameterREF_CLK =18432000;/18.432MHzparameterSAMPLE_RATE=48000;/48kHzparameterDATA_WIDTH =16;/16BitsparameterCHANNEL_NUM=2;/双通道parameterSIN_SAMPLE
35、_DATA=48;/正弦波每个周期的采样点数第4章 DE2平台应用 outputoAUD_DATA;outputoAUD_LRCK;output regoAUD_BCK;inputiCLK_18_4;inputiRST_N;reg3:0BCK_DIV;reg8:0LRCK_1X_DIV;reg7:0LRCK_2X_DIV;reg6:0LRCK_4X_DIV;reg3:0SEL_Cont;reg5:0SIN_Cont;/数据计数器值,表明当前数据是正弦波每个周期的第几个点第4章 DE2平台应用 regDATA_WIDTH-1:0 Sin_Out; /正弦波输出数据regLRCK_1X;regLR
36、CK_2X;regLRCK_4X;/生成AUD_BCK信号/always(posedge iCLK_18_4 or negedge iRST_N)beginif(!iRST_N)beginBCK_DIV=0;oAUD_BCK = REF_CLK/(SAMPLE_ RATE*DATA_ WIDTH*CHANNEL_NUM*2)-1 )beginBCK_DIV=0;oAUD_BCK=oAUD_BCK;endelseBCK_DIV=BCK_DIV+1; end end第4章 DE2平台应用 /生成AUD_LRCK信号/always(posedge iCLK_18_4 or negedge iRST_
37、N)beginif(!iRST_N)beginLRCK_1X_DIV=0;LRCK_2X_DIV=0;LRCK_4X_DIV=0;LRCK_1X=0;LRCK_2X=0;LRCK_4X= REF_CLK/(SAMPLE_ RATE*2)-1)beginLRCK_1X_DIV=0;LRCK_1X=LRCK_1X;endelseLRCK_1X_DIV= REF_CLK/ (SAMPLE_ RATE*4)-1)beginLRCK_2X_DIV=0;LRCK_2X =LRCK_2X;end第4章 DE2平台应用 elseLRCK_2X_DIV= REF_CLK/ (SAMPLE_ RATE*8)-1
38、)beginLRCK_4X_DIV=0;LRCK_4X=LRCK_4X;endelseLRCK_4X_DIV=LRCK_4X_DIV+1;endendassign oAUD_LRCK=LRCK_1X;第4章 DE2平台应用 /生成正弦查找表地址/always(negedge LRCK_1X or negedge iRST_N)beginif(!iRST_N)SIN_Cont=0;elsebeginif(SIN_Cont SIN_SAMPLE_DATA-1 )SIN_Cont=SIN_Cont+1;elseSIN_Cont=0;endend第4章 DE2平台应用 /输出数据/always(neg
39、edge oAUD_BCK or negedge iRST_N)beginif(!iRST_N)SEL_Cont=0;elseSEL_Cont=SEL_Cont+1;endassign oAUD_DATA =Sin_OutSEL_Cont;第4章 DE2平台应用 /正弦表/always(SIN_Cont)begin case(SIN_Cont) 0 : Sin_Out = 0 ; 1 : Sin_Out = 4276 ; 2 : Sin_Out = 8480 ; 3 : Sin_Out = 12539 ; 4 : Sin_Out = 16383 ; 5 : Sin_Out = 19947 ;
40、6 : Sin_Out = 23169 ; 7 : Sin_Out = 25995 ; 8 : Sin_Out = 28377 ; 9 : Sin_Out = 30272 ; 10 : Sin_Out = 31650 ;第4章 DE2平台应用 11 : Sin_Out = 32486 ; 12 : Sin_Out = 32767 ; 13 : Sin_Out = 32486 ; 14 : Sin_Out = 31650 ; 15 : Sin_Out = 30272 ; 16 : Sin_Out = 28377 ; 17 : Sin_Out = 25995 ; 18 : Sin_Out = 23
41、169 ; 19 : Sin_Out = 19947 ; 20 : Sin_Out = 16383 ; 21 : Sin_Out = 12539 ; 22 : Sin_Out = 8480 ; 23 : Sin_Out = 4276 ; 24 : Sin_Out = 0 ; 25 : Sin_Out = 61259 ;第4章 DE2平台应用 26 : Sin_Out = 57056 ; 27 : Sin_Out = 52997 ; 28 : Sin_Out = 49153 ; 29 : Sin_Out = 45589 ; 30 : Sin_Out = 42366 ; 31 : Sin_Out
42、= 39540 ; 32 : Sin_Out = 37159 ; 33 : Sin_Out = 35263 ; 34 : Sin_Out = 33885 ; 35 : Sin_Out = 33049 ; 36 : Sin_Out = 32768 ; 37 : Sin_Out = 33049 ; 38 : Sin_Out = 33885 ; 39 : Sin_Out = 35263 ; 40 : Sin_Out = 37159 ;第4章 DE2平台应用 41 : Sin_Out = 39540 ; 42 : Sin_Out = 42366 ; 43 : Sin_Out = 45589 ; 44
43、: Sin_Out = 49152 ; 45 : Sin_Out = 52997 ; 46 : Sin_Out = 57056 ; 47 : Sin_Out = 61259 ;default : Sin_OutMegaWizard Plug-In Manager菜单启动向导,如图4.5所示。第4章 DE2平台应用 图4.5 启动MegaWizard Plug-In Manager第4章 DE2平台应用 (2) 选择Creat a new custom megafunction variation。(3) 在宏功能列表中的I/O组中选择ALTPLL,选择文件输出类型为Verilog HDL,输出
44、文件名称为Audio_PLL.v,如图4.6所示。第4章 DE2平台应用 图4.6 选择ALTPLL并输入文件名 第4章 DE2平台应用 (4) 在向导的第3页(page 3 of 10)中输入inclock0的频率为27MHz,如图4.7所示。第4章 DE2平台应用 图4.7 确定输入时钟频率 第4章 DE2平台应用 (5) 其他选项不变,在第6页(page 6 of 10)的输出c0设置页,如图4.8所示,选中Use this clock选项,则c0的参数设置框有效;选中Enter output clock frequency,这样可以让ALTPLL根据输出频率自动选择锁相环的设置;在Re
45、quest settings中输入18.432,ALTPLL自动选择最相近的参数,即27MHz经过十五倍倍频和二十七分频之后可得到18.409 091MHz的信号。第4章 DE2平台应用 图4.8 设置输出c0的参数 第4章 DE2平台应用 (6) 其他选项不改变,继续按提示完成向导。完成设计输入之后,用AssignmentsImport Assignments菜单导入DE2系统光盘中的引脚分配文件DE2_pin_assignments.csv,完成引脚分配。完全编译工程后,将生成的audiotest.sof文件下载到FPGA中,在DE2的LINEOUT插座上接上耳机,可听到1kHz单音频的声
46、音,输出信号音量比较大,注意将耳机音量调小,以免损伤听力,也可以用示波器查看输出。第4章 DE2平台应用 代码4.4 audio_test.v。module audio_test(/将DE2_top.v中引脚定义及初始化的内容复制到此处Reset_Delay r0 (.iCLK(CLOCK_50),.oRESET(DLY_RST);Audio_PLL p1(.inclk0(CLOCK_27),.c0(AUD_CTRL_CLK);I2C_Audio_Config u3(.iCLK(CLOCK_50),.iRST_N(DLY_RST),.I2C_SCLK(I2C_SCLK),.I2C_SDAT(I
47、2C_SDAT);第4章 DE2平台应用 AUDIO_D/A转换器 u4(.oAUD_BCK(AUD_BCLK),.oAUD_DATA(AUD_D/A转换器DAT),.oAUD_LRCK(AUD_D/A转换器LRCK),.iCLK_18_4(AUD_CTRL_CLK),.iRST_N(KEY0);endmodule第4章 DE2平台应用 代码4.5 产生延时复位的代码。moduleReset_Delay(iCLK, oRESET);inputiCLK;output regoRESET;reg15:0 Cont;always(posedge iCLK)第4章 DE2平台应用 beginif(Co
48、nt!=16hFFFF)beginCont=Cont+1;oRESET=1b0;endelseoRESETSOPC Builder菜单启动SOPC Builder,建立一个新的SOPC系统,如图4.9所示。本例中将新系统命名为top_sys,将Target HDL选为Verilog,按OK按钮。第4章 DE2平台应用 图4.9 为使用SDRAM建立一个新的SOPC系统第4章 DE2平台应用 建立系统的步骤如下:(1) 从组件库中选择Nios Processor-Altera Coporation,按鼠标右键弹出菜单,选中Add new Nios Processor-Altera Coporat
49、ion。(2) 在弹出的Nios CPU配置窗口中选择Nios Core为Nios/e,JTAG Debug Module选择Level1,其他设置不变。(3) 单击Finish完成Nios处理器的添加。(4) 接下来把SDRAM控制器添加到系统中,在组件库的Memory组中选中SDRAM Controller,按鼠标右键弹出菜单,选中Add New SDRAM Controller,弹出SDRAM配置对话框。(5) 将Data Width修改为16位,其他设置保持默认,也可以根据自己的要求改变其他配置,点击Finish完成SDRAM控制器的添加。第4章 DE2平台应用 (6) 在系统模块列表
50、中选中sdram_0,按鼠标右键弹出菜单,选择Rename,将模块的名称改为SDRAM。(7) 在系统中添加On-Chip Memory以保存Nios软件,在组件库中的Memory组中选中On-Chip Memory,按鼠标右键弹出菜单,选中Add New On-Chip Memory,弹出On-Chip Memory配置对话框。(8) 将Total Memory Size改为40KB,其他选项设置保持默认,点击Finish完成On-Chip Memory的添加。(9) 为了方便调试SDRAM,添加8位LED灯作为指示,在组件库的Others组中选中PIO(Parallel I/O),按鼠标右
51、键弹出菜单,选中Add New PIO(Parallel I/O),弹出PIO配置对话框。第4章 DE2平台应用 (10) 保持默认选项不变,单击Finish完成添加,然后将该模块名称改为LED。添加完所有的模块后,用SystemAuto-Assign Base Addresses菜单重新为系统中的所有模块分配地址,重新分配地址后的模块列表如图4.10所示。点击Next按钮,进入Nios More cpu_0 settings,此时系统设置如图4.11所示,从图中可以看到,Nios处理器的复位地址(Reset Address)、异常处理地址(Exception Address)都设在onchi
52、p_memory_0中,断点位置(Break Location)设在JTAG调试模块中。单击Generate按钮生成系统。第4章 DE2平台应用 图4.10 配置完成后系统中的模块 第4章 DE2平台应用 图4.11 Nios处理器的地址分配 第4章 DE2平台应用 生成SOPC系统后,在Quartus系统中建立一个顶层文件,来例化这个Nios系统。在Quartus中用FileNew菜单打开新建文件对话框,选中Block Diagram,建立一个新的原理图文件(.bdf)。双击.bdf文件中的空白处,打开Symbol窗口,在Symbol窗口的Libraries栏中展开Project项,选中to
53、p_sys,然后按OK按钮,将Nios处理器添加到原理图中,并将这个原理图文件以SDRAM.bdf的文件名保存。图4.12为系统添加除clk及reset_n之外的引脚,DRAM_DQ15.0为双向引脚,其他引脚均为输出引脚。第4章 DE2平台应用 图4.12 Nios系统的引脚 第4章 DE2平台应用 DE2平台上的SDRAM时序(请参照IC42S6400-7T datasheet),要求将DE2所提供的50MHz时钟延时3ns或者相位延迟60之后作为SDRAM的时钟输入DRAM_CLK,可以用锁相环产生这个时钟延迟。按下列步骤生成锁相环的代码:(1) 用ToolsMegaWizard Plu
54、g-In Manager菜单建立一个新的Megafunction。(2) 在Installed Plug-Ins中的I/O中选择ALTPLL,并将输出文件命名为SDRAM_CLK。(3) 在向导的第3页中将inclock0的输入频率改为50MHz。第4章 DE2平台应用 (4) 取消向导第4页的所有选项。(5) 将向导第6页中的Clock Phase Shift项设为60deg或3ns,其余参数保持不变,完成锁相环的配置。生成锁相环之后,在SDRAM.bdf中的空白处双击,Project中会出现一个SDRAM_PLL,将SDRAM_PLL添加到.bdf文件中,然后参照图4.13完成.bdf文件
55、。锁相环SDRAM_PLL的Verilog代码在当前工程的目录中,名为SDRAM_PLL.v,可以用Quartus打开并查看其内容。第4章 DE2平台应用 图4.13 完成之后的顶层设计文件 第4章 DE2平台应用 完成顶层文件的设计之后,可以从DE2_pin_assignments.csv中导入引脚分配,保存工程,然后完整编译工程并将工程下载到FPGA中去。具体过程可参照第3章的相关内容。硬件设计完成之后,在Nios IDE中通过软件测试SDRAM的连接是否正确。按以下步骤完成测试:(1) NiosIDE中,用NewC/C+ Applications菜单建立一个新工程。(2) 选择Blank
56、 Project模板。(3) 选择硬件设计所在目录中的top_sys.ptf文件作为系统文件。(4) 选择cpu_0作为处理器。5) 点击Finish完成工程创建。为工程新建一个文件SDRAM.c,文件中的内容如代码4.6所示。第4章 DE2平台应用 代码4.6 测试SDRAM的代码。#include system.h#include altera_avalon_pio_regs.hint main() IOWR(SDRAM_BASE,0,3); /对SDRAM中0地址位写数据3IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,IORD(SDRAM,0);/读取SDRA
57、M中0地址位数据并使LED显示return 0;第4章 DE2平台应用 测试代码中先向SDRAM的地址0写入数据3,然后再将SDRAM中地址0的数据读出来并在LED上显示。编译工程时,选中工程并按鼠标右键,在弹出的菜单中选择Run as Hardware下载并运行程序,此时LEDR1和LEDR0亮,LEDR2LEDR7不亮,表明SDRAM可用。可在此代码基础上编写更复杂的测试代码和应用代码。第4章 DE2平台应用 需要注意的是,SOPC Builder中将程序存储器默认为On-Chip Memory。可以按照下列步骤将Program Memory设定在SDRAM中:(1) 参照前文建立SOPC
58、系统的步骤,将系统中的On-Chip Memory模块删除。(2) 将Reset Address和Exception Address都设在SDRAM中,重新生成top_sys,并且重新编译下载Quartus工程文件。(3) 在NiosIDE中,选中刚建立的工程,单击鼠标右键,选择System Library Properties,弹出系统库属性设置对话框。第4章 DE2平台应用 (4) 在系统库属性设置对话框中,将Program Memory设置成SDRAM,选择OK按钮完成设置。完成以上步骤之后,将测试代码修改为如代码4.7所示的内容,在这个代码中,Nios处理器直接点亮LEDR0LEDR7
59、,编译并运行测试代码,LEDR0LEDR7全亮,说明程序已经在SDRAM中成功运行。第4章 DE2平台应用 代码4.7 程序在SDRAM中运行的测试代码。#include system.h#include altera_avalon_pio_regs.hint main() IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0 xff); return 0;第4章 DE2平台应用 4.3.2 在在Nios中使用中使用SRAM由于SOPC Builder组件库中没有现成的SRAM组件,因此需要自己编写SRAM与Avalon总线模块的接口文件,并将SRAM作为自定义组件加入
60、到SOPC系统中去。其余用法与SDRAM相同。为SRAM接口建立一个新的Verilog文件,命名为ext_sram.v,如代码4.8所示。第4章 DE2平台应用 代码4.8 SRAM接口代码ext_sram.v。moduleSRAM_16Bit_512K( /Avalon总线模块侧信号oDATA,iDATA,iADDR,iWE_N,iOE_N,iCE_N,iRST_N,iUB_N,iLB_N,/SRAM侧信号SRAM_DQ,SRAM_ADDR,SRAM_UB_N,SRAM_LB_N,SRAM_WE_N,SRAM_CE_N,SRAM_OE_N);第4章 DE2平台应用 input15:0 iDATA;o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 六一创意聚会活动方案
- 六一寻宝活动策划方案
- 六一戏曲活动方案
- 六一机关活动方案
- 六一活动拉花活动方案
- 六一活动活动策划方案
- 六一相亲活动方案
- 六一积分活动方案
- 六一美食节活动方案
- 六一食堂活动方案
- 2023-2024学年海南省海口市四年级(下)期末数学试卷
- T/GDWJ 011-20225G+院前急救服务应用平台技术规范
- 公务员会计岗位考试题及答案
- 安徽教编美术试题及答案
- 2024-2025湘科版小学科学四年级下册期末考试卷附参考答案
- 2024北京朝阳区四年级(下)期末语文试题及答案
- 劳务报酬扣税计算器(excel自带公式版)
- 护理不良事件警示教育
- 托育服务政策法规与职业伦理 课件全套 黄鑫 第1-8章 绪论、托育服务政策法规概述-托育职业伦理教育、修养与评价
- 中学历史教学中存在的问题与对策建议
- 安徽省历年中考作文题与审题指导(2001-2024)
评论
0/150
提交评论