基于fpga的音频信号分析仪设计含完整程序内容摘要:
STLI/O 标准的输入缓冲器。 还有 4 组或者 8 组的 VCC 引( VCCIO)用于驱动输出 I/O 引脚和使用LVTTL,LVCMOS 或者 PCII/O 标准的输入缓冲器。 CYCLONII 器件的 VCCINT 引脚必须接 的电源,如果 VCCINT 接的是,那么输入引脚允许接 , 或者。 VCCIO 引脚能从 , 或者 的电源中任选,依赖于输出的需求。 输出电平可以与系统的电源相容。 (例如当 VCCIO 接了 的电源,输出电平就会调整为 的系统)。 当 VCCIO 引脚接了 的电源,输出最高为 并且与 的系统兼容。 由于 FPGA 核心板要驱动 AD 转换芯片和彩色液晶,而 AD 转换芯片和彩色液晶都需要与 电压兼容的电平。 所以 VCCIO 引脚接了 的电源的电压。 基于 FPGA 的音 频信号分析仪 7 图 2 FPGA 核心板电源电路 FPGA 时钟电路 ( 1)全局时钟网络 在整个 CYCLONII 器件中有 16 或者 8 个全局时钟网络驱动器,专用的时钟引脚( CLK[ ]), PLL 输出,逻辑阵列和两用的时钟引脚( DPCLK[])都 能驱动全局时钟网络。 如果这些专用的时钟引脚没有用来提供给全局时钟网络,那么他们可以被用作普通的输入引脚提供给逻辑阵列作为多通道连接。 不过,如果他们被用作普通目的的输入引脚,他们没有可用的 I/O 寄存器,必须用 LEbased 寄存器来代替。 CYCLONII 器件总有 20 个或 8 个有双重用处的时钟引脚, DPCLK[19..0]或者 DPCLK[7..0],较大的器件有 20 个,左右两边各 4 个,上下两边各 6 个。 角落的 CDPCLK 引脚在进入时钟控制模块之前首先被复用。 直到有信号通过一个多路复用器馈送到时钟控制模块之前,这 些信号到时钟控制模块产生的延时要大于其他直接馈送到时钟控制模块的 DPCLK引脚。 在较小的 CYCLONII器件中(如EP2C5 和 EP2C8)有 8 个 DPCLK 引脚,器件的每边各两个。 一个可编程的延时信道从 DPCLK 引脚到他的扇出终点是可见的,要设置从 DPCLK 引脚到他扇出终点的延时,要使用 QUARTUSII 软件中的 Input Delay from DualPurpose Clock 基于 FPGA 的音 频信号分析仪 8 Pinto FanOut Destinations assignment 设置。 这些双重作用的引脚能连接到全局时钟网络作为高扇 出控制信号,例如时钟,异步清零,预设,时钟使能,或者协议控制信号如 PCI 的 TRDY 和 IRDY,外部存储接口 DQS。 全局时钟网络可以为器件内部的所有资源提供时钟,例如 IOEs, LEs,存储模块和内部乘法器。 全局时钟线也可被控制信号使用,例如时钟使能和通过外部引脚同步或异步清除反馈,也可用于 DDRSDRAM 或者 QDRIISRAM 的 DQS 信号接口。 内部逻辑也能驱动全局时钟网络内部产生全局时钟和异步清零,时钟使能,或者其他带大扇出的控制信号。 ( 2) 时钟控制模块 CYCLONII 器件有一个可见的时钟控制块来 控制全局时钟网络。 这些时钟控制模块被分配到器件的外围,每个 CYCLONII 器件最多有 16 个可见时钟控制模块,器件的每边有 4 个,稍小一些的 CYCLONII 器件( EP2C5 或 EP2C8)有 8个时钟控制模块,器件的左右各 4 个。 这些控制模块有以下功能: 1动态全局时钟网络时钟源选择; 2动态使能或禁用全局时钟网络 在 CYCLONII 器件中,专用的 CLK[]引脚, PLL 计数器输出, PDCLK[]引脚和内部逻辑都可以向全局时钟块提供源。 时钟模块的输出又反馈给相应的全局时钟网络。 以下几个源可以作为时钟控制模块的输入: ○1 在同一边的 4 个时钟引脚作为时钟控制模块; ○2 一个 PLL 输出三个 PLL 时钟引脚; ○3 四个 DPCLK 引脚(包括 CDPCLK 引脚)在同一边作为时钟控制模块; ○4 四个内部产生信号 在这些源中,只有两个时钟引脚,两个 PLL 时钟输出,一个 DPCLK 引脚,和一个内部逻辑信号可以被器件选择输入到时钟控制模块,除了这六个输入,两个时钟引脚和两个 PLL 输出引脚可以被动态的选择提供给全局时钟网络。 时钟控制模 块支持从 DPCLK 和内部逻辑信号中静态选择。 基于 FPGA 的音 频信号分析仪 9 图 3 FPGA 核心板的时钟电路 FPGA 配置电路 CYCLONII 器件使用 SRAM 单元存储配置信息,由于 SRAM 存储器是易失性的,所以每次上电后配置信息都会重新加载到 CYCLONII 芯片中。 可以使用AS( actionserial)配置方式,这需要 DCLK 的频率达到 40MHz 的情况下,配置CYCLONII 芯片。 也可使用 PS( passiveserial)和 JTAG( JointTestActionGroup)方式来配置。 此外, CYCLONII 芯片还能接 收压缩的配置信息比特流,在运行过程中解压这些数据,来降低存储要求和配置时间。 可以通过 CYCLONII 芯片的 MSEL 引脚的高低来选择哪中配置方式, MSEL引脚是有其所在 bank 的 VCCIO 引脚驱动的, MSEL[1..0]引脚有 9K 欧的内部下拉电阻始终有效。 在上电复位和重新配置时, MSEL 引脚肯定是出于 LVTTLVil或者 Vih 电平,分别被看作逻辑低和逻辑高。 因此,为了避免因使用了错误的配基于 FPGA 的音 频信号分析仪 10 置方法而产生问题,需要将 MSEL[]引脚连接到其所在的 I/Obank 的 VCCIO 和GND,不需要连上拉或下拉电阻。 MESL[]引脚不需要处理器或其他的器件来驱动。 表 1 CYCLONII 配置模式 配置模式 MSEL1 MSELO 描述 AS( 20MHz) 0 0 串行配置器件 PS 0 1 增强配置器件 FastAs(40MHz) 1 0 AS 模式 JTAG * * 下载电缆和微机 图 4 FPGA 的配置电路 前级信号调理电路 前级信号调理电路由前级阻抗匹配电路、低通滤波器和信号抬高电路组成。 信号输入后通过 R5,R6 两个 100Ohm 的并联电阻和一个高精度低噪声运放OP07 实现跟随作用,由于集成运放的输入阻抗很 大,所以输入阻抗即为:R5//R6=50Ohm。 OP07 闭环带宽 600KHZ,电压噪声密度 10 个单位,充分满足基于 FPGA 的音 频信号分析仪 11 系统的设计要求。 图 5 前级阻抗匹配电路 系统要求 音频信号频率为 20HZ~10KHZ,根据奎斯特定律,我们至少要保证20K的采样频率,才能保证所处理的信号被不失真的采集,否则会发生混叠现象(还原信号时,被采样的低频信号与高频信号无法区分 ),现在就是要设计这样一个滤波器,能够很好的滤去 10KHZ以上的频率,考虑到设计难度与实际情况,放弃了制作 20HZ~10KHZ带通滤波器的想法,转而制作一款高性能 的低通滤波器,截止频率 10KHZ。 低通滤波器的制作方法很多,有源,无源,查表,同时还可以借助丰富的滤波器设计软件验证自己的设计,结合自己的实际制作经验,选用一款开关电容滤波器芯片 MAX293来完成本次设计低通滤波环节。 MAX293是一款8阶低通椭圆开关电容滤波器芯片,有两种驱动方式,一种是时钟驱动,从 CLK脚输入一个频率为 F的信号,即可得到截止频率为 F/100的低通滤波器,第二种是在 CLK脚对地并一个电容,截止频率与电容的关系大约为 F=100000/3C。 考虑到防止时钟信号的串扰和简化设计,采用第二种方式。 基于 FPGA 的音 频信号分析仪 12 图 6 低通滤波电路 系统要求能测试的音频信号的峰峰值为 5v,而 AD转换电路只能采样正信号,所以需要把信号至少抬高 才能让 AD 转换电路正确的采样。 并且 AD 的参考电压为 +5v,如果信号的最大幅值超过 +5v 将不能被 AD 转换电路正确采样。 因此,信号抬高电路只有把输入信号抬高 才能满足以上两个要求。 根据叠加定理: Vout(=( 1+R7/R8) *(R11/(R11+R10))*Vin+( 1+R7/R8)*(R10/(R11+R10))*5=Vin+。 基于 FPGA 的音 频信号分析仪 13 图 7 信号抬高电路 AD采样电路设计 为了提高系统的精度, AD 转换芯片我选用的是 MAXIM 公司生产的新型 12位串行模数转换器 MAX144。 MAX144 是美国 MAXIM公司生产的新型双通道 12 位串行模数转换器 ,它具有自动关断和快速唤醒功能 ,且内部集成有时钟电路 ,采样 /保持电路。 同时具有转换速率高、功耗低等优点 ,特别适合于由电池供电且对体积和精度有较高要求的智能仪器仪表产品。 图 8 AD 采样电路 基于 FPGA 的音 频信号分析仪 14 系统电源电路设计 根据系统的要求,本系统需要 +5v,5v 两种电压,考虑到实际调试情况和电路的升级,在系统电源设计的时候加上了正负电压可调的电源电 路。 直流稳压电源一般由电源变压器、整流滤波电路及稳压电路所组成。 其中+5v,5v 两种电压由稳压芯片 CW7805 和 CW7905 产生,正负可调电压由 LM317和 LM337 产生。 D1Bridge12200uFC12200uFC2C4C3Vin VoutGNDLM317200R410uFC610uFC5200R3Vin VoutGNDLM337C8C7Vin VoutGND7805Vin VoutGND7905C10C9D21KR5R1R2T1 图 9 系统电源电路 彩色液晶电路设计 为了让音频信号功率谱显示的更清晰,本系统采用了 寸分辨率为320*240 的彩色液晶。 这款液晶的驱动芯片采用的是 NEC 公司 μPD161704A。 μPD161704A有 1382400 位的显示 RAM( 240pixelsx18bitsx320lines)。 基于 FPGA 的音 频信号分析仪 15 图 10 彩色液晶驱动电路 触摸屏电路 设计 为了让系统人机界面的操作性更好,在彩色液晶上面还加了一块触摸屏。 触摸屏的驱动芯片采用的是 TI 公司的 ADS7843。 ADS7843 是 4 线电阻触摸屏转换接口芯片。 它是一款具有同步串行接口的 12 位取样模数转换器。 ADS7843的工作原理就是通过连结触摸屏 X+将触摸信号输入到 AD转换器同时打开 Y+和 Y驱动,然后将数字化的 X+的电压,从而得到当前 Y位置的测量结果。 同理也得到 X方向的坐标。 基于 FPGA 的音 频信号分析仪 16 图 11 触摸屏驱动电路 基于 FPGA 的音 频信号分析仪 17 4 系统软件设计 NIOSII集成开发环境介绍 NIOSII 集成开发环境 (IDE)是 NIOSII 系列嵌入式处理器的基本软件开发工具。 所有软件开发任务都可以 NIOSII IDE 下完成,包括编辑、编译和调试程序。 NIOSII IDE 提供了一个统一的开发平台,用于所有 NIOSII 处理器系统。 仅仅通过一台 PC 机、一片 ALTERA 的 FPGA 以及一根 JTAG 下载电缆,软件开发人员就能够往 NIOSII 处理器系统写入程序以及和 NIOSII 处理器系统进行通讯。 NIOSII IDE 基于开放式的、可扩展 EclipseIDEproject 工程以及 EclipseC/C++开发工具( CDT)工程。 系统主程序设计 主程序 包括 AD转换驱动程序 , LCD初始化与显示 , 触摸屏驱动与触摸识别和 FFT运算。 主程序流程图如图 12所示,程序见附录。 图 12 主程序设计流程图 基于 FPGA 的音 频信号分析仪 18 AD转换驱动程序 为了让 AD 转换电路正确地采样数据和 NIOSII 软核 CPU 正确地读取数据,整个 AD 转换驱动程序由一个时钟控制模块,串行数据转并行数据模块, 16 位的加法器,一个 12 位 D 触发器缓冲模块和 MAX144 的状态机模块组成。 图 13 QUARTUSII软件下设计的 MAX144驱动的顶层原理图 由于本系统采用的是 12 位串行 AD,对时序要求很严格。 所以必须严格按照 MAX144 的数据手册上时序,利用状态机编写驱动程序。 MAX144 的两个模拟输入通道 CH0 与 CH1 可连接到两个不同的信号源上。 上电复位后 ,MAX144 将自动对 CH0 通道的模拟信号进行 A/D 转换 ,转换完毕又自动切换到 CH1 通道 ,并对 CH1 通道模拟信号进行 A/D 转换 ,之后交替地在 CH0和 CH1 通道间进行切换和转换。 输出数据中包含的一个通道标志位 CHID,用以确定该数据为哪一通道转换得到。 如果只有一路模拟信号 ,可以。基于fpga的音频信号分析仪设计含完整程序
相关推荐
个阶段 即 GIS 模块 集成式 GIS 模块化 GIS 核 心 式 GIS 组 件 式 GIS 和 万 维 网 GIS[8] 其中组件式 GIS 和万维网 GIS 是现代 GIS 研究的热点 3 GIS 模块 GIS Modules 在 GIS 发展的早期阶段 由于受到技术的限制 GIS 软件只是一些用于满足某些功能要求的模块 并没有形成完整的系统 各个模块 之间不具备协同工作的能力
度计、温度计。 通过使用 4个同步无刷直驱电马达,飞行器的噪音非常小 (当转速小于 2020转 /分钟,在 3米处噪音小于 63分贝 )。 选配的 GPS 系统能够实现空间位置锁定与自动航点导航功能,还可以选择以 microSD卡作为记录器的飞行记录仪来实时记录和分析飞行数据,所有重要的飞行数据都可以下载到数据中心,包括电池状态、高度、姿态、位置、飞行时间等。
态和航向参考系统 )使用了如下几种传感器:加速计、陀螺仪、磁力计、气压计、湿度计、温度计。 通过使用 4个同步无刷直驱电马达,飞行器的噪音非常小 (当转速小于 2020转 /分钟,在 3米处噪音小于 63分贝 )。 选配的 GPS 系统能够实现空间位置锁定与自动航点导航功能,还可以选择以 microSD卡作为记录器的飞行记录仪来实时记录和分析飞行数据,所有重要的飞行数据都可以下载到数据中心
_tinmeout)then count_k_end=39。 139。 else counter_k=Counter_k+1。 end if。 end if。 end process Count_key。 Count_alarm:process(Enable_count_a,clk) begin if(enable_count_a=39。 139。 )then counter_a=39。 039
WHEN 0010 = 发送第 2 位 IF (clkbaud_tras = 39。 139。 ) THEN txd_reg = txd_buf(0)。 txd_buf(6 DOWNTO 0) = txd_buf(7 DOWNTO 1)。 南昌航空大学学士学位论文 14 state_tras = state_tras + 0001。 END IF。 WHEN 0011 = 发送第 3 位 IF
al strobe : std_logic。 begin process (sysreset,reset0,on_off0) begin if (sysreset=’ 1’ or reset0 = ’ 1’ ) then strobe = ‘ 0’。 elsif (on_off0’ event and on_off0 = ’ 1’ ) then strobe = not strobe。 end