基于FPGA的FIR数字滤波器设计

合集下载

基于FPGA的FIR滤波器设计与实现

基于FPGA的FIR滤波器设计与实现

目录引言................................... 错误!未定义书签。

第一章 FPGA的设计流程 ................... 错误!未定义书签。

1.1 FPGA概述 ................................... 错误!未定义书签。

1.2 FPGA设计流程................................. 错误!未定义书签。

1.3硬件描述语言HDL(Hardware Description Language) 错误!未定义书签。

1.4 FPGA开发工具Quartus Ⅱ软件设计流程 ......... 错误!未定义书签。

第二章有限冲激响应(FIR)滤波器的原理及设计.... 错误!未定义书签。

2.1数字信号处理基础原理.......................... 错误!未定义书签。

2.2 FIR滤波器背影知识........................... 错误!未定义书签。

2.3 FIR数字滤波器原理............................ 错误!未定义书签。

2.4 利用窗函数法设计FIR滤波器................... 错误!未定义书签。

第三章 FIR 数字滤波器的FPGA实现........... 错误!未定义书签。

3.1串行FIR滤波器原理............................ 错误!未定义书签。

3.2分布式算法基础................................ 错误!未定义书签。

3.3直接型FIR滤波器的原理结构图.................. 错误!未定义书签。

3.4具有转置结构的FIR滤波器...................... 错误!未定义书签。

第四章结论与总结......................... 错误!未定义书签。

基于FPGA的FIR数字滤波器的实现

基于FPGA的FIR数字滤波器的实现

基于FPGA的FIR数字滤波器的实现陈剑冰【期刊名称】《现代计算机(普及版)》【年(卷),期】2013(000)010【摘要】The main problems in the study of FIR digital filter are focused on reducing the consumption of the system resources, improving the speed and accuracy of operation. Realizes the FIR digital filter on FPGA with VHDL language. Introduces the CSD-RAG coding and builds the adder tree with the key factors. Compared with the traditional MAC structure and DA look-up table, the method can reduce the consumption of system resources and improve the accuracy of data processing by employing the integer quantization coefficients.%减少系统资源占用,提高运算速度与运算精度一直是FIR数字滤波器的研究中的主要课题。

采用VHDL语言在FPGA上实现一种FIR数学滤波器。

该滤波器采用CSD-RAG编码,利用公共因子来构建加法树。

相对于传统的乘累加结构与DA查表法,能大量地降低系统资源占用,同时采用整数量化抽头系数,提高数据处理的精度。

【总页数】4页(P64-66,80)【作者】陈剑冰【作者单位】华南师范大学物理与电信工程学院,广州 510006【正文语种】中文【相关文献】1.基于CORDIC算法的动态FIR数字滤波器FPGA实现与应用 [J], 宋定昆;刘桂雄;唐文明2.基于人体域网的FIR数字滤波器的FPGA实现 [J], 徐洋;李国权;庞宇;贺焱秋3.基于FPGA的FIR数字滤波器的设计与实现 [J], 熊洁;黄蕾4.基于FPGA的FIR数字滤波器设计与实现 [J],5.基于FPGA的FIR数字滤波器设计及实现 [J], 宋卓达;王志乾;李建荣;沈铖武;刘绍锦因版权原因,仅展示原文概要,查看原文内容请购买。

基于FPGA技术的FIR数字滤波器的设计

基于FPGA技术的FIR数字滤波器的设计

通常在信号产生、采集、传输过程中产生杂波和噪声,通常需要加入滤波器将干扰无用的噪声或者不需要频段的信号滤除。

数字滤波器和模拟滤波器相比具有更高的精度、信噪比,以及不可比拟的可靠性[1]。

只要适当改变数字滤波程序有关参数,就能方便的改变滤波特性,因此数字滤波使用时方便灵活。

由于在性能、成本、灵活性和功耗等方面的优势,基于FPGA 的信号处理器已广泛应用于各种信号处理领域。

本文正是在此背景下研究基于FPGA 技术,运用DSP Builder 和MATLAB 等软件工具设计工程中实用的FIR 数字滤波器。

1、FIR 数字滤波器设计原理有限长脉冲响应(FIR )滤波器的系统函数只有零点,除原点外,没有极点,因而FIR 滤波器总是稳定的[2]。

长度为M 的因果有限冲激响应滤波器由传输函数H (z )描述:1()()M kk H z h k z −−==∑它是次数为M-1的z-1的一个多项式。

在时域中,上述有限冲激响应滤波器的输入输出关系为:1()()()M k y n h k x n k −==−∑其中x(n)是输入采样序列,h(i)是滤波器系数,y(n)表示滤波器的输出序列。

也可以用卷积来表示输出序列y(n)与x(n)、h(n)的关系。

)(*)()(n h n x n y =通常一个长度为M 的有限冲激响应滤波器由M 个系数描述,并且需要M 个乘法器和(M-1)个双输入加法器来实现。

图1中显示了一个典型的直接I型4阶FIR 滤波器,其输出序列y (n)满足下列等式:在这个FIR 滤波器中,总共存在3个延时节,4个乘法单元,一个4输入的加法器。

z -1x (n )h (0)y (n )z -1z-1h(1)h(2)h (3)图1 直接I 型4阶FIR 滤波器模型2、设计方案及设计指标2.1 DSP Builder 设计概述FPGA 的DSP 性能领先的关键是其内在的并行机制,即利用并行架构实现DSP 功能的功能。

基于FPGA的FIR数字滤波器的设计及仿真设计

基于FPGA的FIR数字滤波器的设计及仿真设计

1 绪论本章主要论述该课题的研究意义,目前在世界上的发展情况,以及我在这篇论文中所用到的主要的设计方法与设计工作。

1.1 课题研究的意义许多工程领域都涉及到如何能在强背景的噪声信号和干扰信号中提取到真正的信号。

如:遥感和遥测系统,通信系统,雷达系统,航天系统等,这就要求有信号的滤波。

滤波器的带宽等性能,处理速度的要求随着现在对高速,宽带,实时信号处理的要求越来越高,也随之提高。

系统的稳定性和后续信号的处理受滤波器的性能好坏程度影响常大。

[1]1.2 国内外研究动态1.2.1 数字信号处理的发展动态一般可以用两类方法来实现FIR滤波器的设计。

一类通过软件来设计实现,使用常见的电脑语言如高层次的C / C + +跟MATLAB语言。

此方法用于教学或算法仿真。

但是采用软件的方法不能实现实时性。

目前可以通过以下几种方式在硬件中来实现,。

一种是使用可编程的主要数学单位是一个乘法累加器(MAC)的通用DSP 芯片编程。

实时数字信号能够实现高速的处理,是因为MAC在一台机器时钟周期就能完成乘法累加操作,同时在硬件上还辅助与不同的流水结构和哈佛架构。

然而,在应用时受到了限制,是由于硬件结构和流水结构是固定不变的。

一种是使用专用的ASIC数字信号处理芯片。

这种方法是芯片尺寸小,高性能,保密性好。

其缺点是一个单一功能的芯片,多是针对一定的功能而设计,灵活性不够。

另一种方法是使用可编程逻辑器件(FPGA / CPLD)。

FPGA所具有得可编程逻辑的灵活性突破了流水线结构和并行处理的局限性,可以很好的实现实时信号处理功能。

研发过程中它的可移植性更好,可以缩短开发周期。

[2~11]1.2.2 FIR数字滤波器的FPGA实现使用FPGA技术设计的FIR数字滤波器在目前通常采用的是乘法器结构和分布式算法结构。

乘法器结构,有乘累加结构与并行乘法器结构两种形式。

乘累加结构是最简单的一种,占用资源少,缺点是处理速度慢;并行乘法器结构比较复杂,但是如果能够加上流水结构,信号就能够实现高速的处理,但是它还是会受到处理速度和数量的限制。

基于FPGA的FIR数字低通滤波器的设计

基于FPGA的FIR数字低通滤波器的设计

EDA设计基础实验课程论文题目基于FPGA的FIR数字低通滤波器的设计学院通信与电子工程学院专业班级通信111班学生姓名霍守斌指导教师大力会目录摘要 (I)Abstract............................................................ I I 第1章绪论 (1)1.1 课题的目的和意义 (1)1.2 FPGA技术的发展及应用 (2)1.3FPGA软件设计工具Quartus II (3)第2章FIR数字滤波器的理论研究及分析 (5)2.1数字滤波器的理论基础 (5)2.2 数字滤波器的分类 (5)2.3FIR数字滤波器的设计方法 (6)第3章FPGA DSP系统设计分析 (7)3.1DSP的基本概念 (7)3.2 FPGA实现DSP的特点 (8)3.3DSP Builder设计工具及设计规则 (9)第4章基于FPGA的FIR低通滤波器设计 (12)4.1设计方案 (12)4.2FDATool滤波器设计 (12)4.3FPGA定点数的确定 (14)4.3.1导出系数文件 (14)4.3.2FPGA定点数转换 (15)4.4FIR滤波器模型的建立 (17)4.4.1乘加子系统的搭建 (17)4.4.2滤波器模块的添加和模块参数设置 (21)4.4.3各模块的连接 (27)第5章Simulink仿真 (29)5.1 仿真时间设定 (29)5.2示波器模块显示 (29)5.3仿真结果分析 (31)结论 (33)参考文献 (34)致谢 (35)附录 (36)附录1 FIR滤波器仿真模型图 (36)附录2 FIR滤波器测试模型图 (37)附录3 FPGA定点数转换程序 (37)摘要在现代通信领域中,FIR数字滤波器以其良好的线性特性被广泛使用,属于数字信号处理的基本模块之一。

在实践中,往往要求对信号处理有实时性和灵活性,而已有的一些软件和硬件的实现方式则难以同时到达这两方面的要求。

基于FPGA的FIR数字滤波器算法研究与设计实现的开题报告

基于FPGA的FIR数字滤波器算法研究与设计实现的开题报告

基于FPGA的FIR数字滤波器算法研究与设计实现的开题报告一、研究背景数字滤波器是数字信号处理中的重要组成部分,能够对数字信号进行滤波处理,用于实现去噪、滤波等信号处理功能。

其中,有限长脉冲响应(FIR)数字滤波器是一种基于加权系数的离散时间滤波器,其具有线性相位、稳定性好等优点,因而得到广泛应用。

同时,FPGA作为一种可编程逻辑门阵列,拥有较高的计算性能和可重构性,在数字信号处理系统中得到广泛应用。

因此,本研究将以FPGA为硬件基础,设计并实现基于FIR的数字滤波器算法。

二、研究目的本研究旨在探究FPGA实现FIR数字滤波器算法的方法,具体包括以下目标:1.研究FIR数字滤波器的基本原理和实现方法,包括滤波器设计、FIR滤波算法及其计算方法等。

2.探究FPGA的基本原理和应用,了解FPGA的可重构特性和计算性能优势。

3.设计并实现基于FPGA的FIR数字滤波器算法,包括滤波器模块的设计、模块间的数据传输及控制等。

4.通过实验验证所设计实现的数字滤波器算法的性能和可行性,包括信号滤波效果、计算速度等方面的评价。

三、研究内容和方法1.研究内容(1)FIR滤波器的基本原理及其设计方法,包括滤波器类型、频率响应、滤波器系数的计算和设计等。

(2)FPGA的基本原理和应用,了解FPGA的特性、开发工具及其编程语言等。

(3)设计并实现基于FPGA的FIR数字滤波器算法,包括设计硬件端口、数值计算模块、状态机控制、波形展示等。

(4)通过实验验证所设计实现的数字滤波器算法的性能和可行性。

2.研究方法(1)文献调研法:通过查阅相关文献,了解FIR数字滤波器算法的原理和应用以及基于FPGA的数字信号处理方法。

(2)实验方法:依据研究方案,选定适当硬件和软件平台,搭建实验环境,进行实验数据采集、计算和分析。

(3)仿真方法:通过仿真软件对设计的数字滤波器进行性能分析和计算模型验证。

四、研究意义本研究的意义在于探究基于FPGA的数字滤波器算法实现方法,对数字信号处理领域的研究具有重要的意义。

毕业设计_基于FPGA的FIR数字滤波器设计 - 1

毕业设计_基于FPGA的FIR数字滤波器设计 - 1

学士论文基于FPGA的FIR数字滤波器设计摘要随着公元的第二十一个世纪的到来,今天我们进入了一个科技日新月异的时代。

在现代电子数字系统中,滤波器都以一个不可缺少的身份出现。

其中,FIR数字滤波器又以其良好的线性特性被广泛和有针对性的大量使用。

众所周知,灵活性和实时性是工程实践中对数字信号处理的基本要求。

在以往使用的各种滤波器技术中,不难发现有许许多多的问题。

但是,随着现代计算机技术在滤波问题上的飞跃,派生出一个全新的分支——数字滤波器。

利用可编程逻辑器件和EDA技术,使用FPGA来实现FIR滤波器,可以同时兼顾实时性和灵活性。

基于FPGA的FIR数字滤波器的研究势在必行。

本论文讨论基于FPGA的FIR数字滤波器设计,针对该毕业设计要做的基本工作有如下几点:(一)掌握有限冲击响应FIR(Finite Impulse Response,FIR)的基本结构,研究现有的实现方法。

对各种方案和步骤进行比较和论证分析,然后针对目前FIR数字滤波器需要的特点,速度快和硬件规模小,作为指导思想进行设计计算。

(二)基于硬件FPGA的特点,利用Matlab软件以及窗函数法设计滤波器。

对整个FPGA元件,计划采用模块化、层次化设计思想,从而对各个部分功能进行更为详细的理解和分工设计。

最终FIR数字滤波器的设计语言选择VHDL硬件编程语言。

(三)设计中的软件仿真使用Altera公司的综合性PLD开发软件Quartus II,并且利用Matlab工具进行对比仿真,在仿真的过程中,对比证明,本论文设计的滤波器的技术指标已经全部达标。

关键词:数字滤波器Matlab 可编程逻辑元件模块化算法1绪论1.1本课题研究意义在现代通信信号处理领域中,随着各种精密计算和快速计算的发展对信号处理的实时性、快速性的要求越来越高。

以往的模拟滤波器无法克服电压漂移、温度漂移和噪声等问题,从而带来了许多误差和不稳定因素。

而数字滤波器具有稳定性高、精度高、设计灵活、实现方便等突出优点。

基于FPGA的FIR数字滤波器的设计

基于FPGA的FIR数字滤波器的设计

基于FPGA的FIR数字滤波器的设计The Design Of FIR Digital Filter Based On FPGA目录摘要 (I)Abstract (II)引言 (1)第一章FIR数字滤波器设计 (2)1.1 FIR数字滤波器 (2)1.1.1数字滤波器简介 (2)1.1.2 FIR数字滤波器 (3)1.1.3 FIR数字滤波器的结构 (4)1.2 FIR数字滤波器设计方法 (6)1.2.1时窗函数法 (6)1.2.2频率采样法 (8)1.2.3等波纹最佳逼近法 (10)1.2.4三种设计方法的比较 (11)第二章基于MATLAB的FIR数字滤波器的设计与仿真 (12)2.1 MATLAB软件 (12)2.2使用MATLAB函数进行FIR数字滤波器的设计 (12)2.2.1时窗函数设计法 (12)2.2.2频率采样设计法 (13)2.2.3等波纹最佳逼近设计法 (14)2.3使用FDATool设计FIR数字滤波器 (15)2.4使用Simulink进行仿真 (16)第三章EDA技术与分布式算法 (19)3.1 EDA技术 (19)3.1.1 EDA技术简介 (19)3.1.2 QUARTUS II软件介绍 (19)3.1.3 FPGA介绍 (20)3.2 FPGA设计方法 (22)3.3分布式算法 (23)3.3.1分布式算法基础 (23)3.3.2并行的分布式算法 (24)3.3.3串行的分布式算法 (24)第四章 15阶并行FIR数字滤波器的设计与仿真 (26)4.1顶层文件的设计 (26)4.2并行FIR各个模块的设计 (28)4.2.1输入数据预处理模块 (28)4.2.3预相加模块 (30)4.2.4查找表模块 (32)4.2.5加法器模块 (35)4.2.6移位累加器模块 (37)4.2.7输出处理模块 (38)4.3顶层综合与仿真 (38)4.4数据误差分析 (41)结论 (43)致谢 (44)参考文献 (45)基于FPGA的FIR数字滤波器的设计摘要:线性相位是FIR数字滤波器设计中的一个重要条件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、F PGA技术简介现场可编程门阵列FPGA是80年代末开始使用的大规模可编程数字IC器件,它充分利用EDA技术进行器件的开发与应用。

用户借助于计算机不仅能自行设计自己的专用集成电路芯片,还可在计算机上进行功能仿真和时序仿真,及时发现问题,调整电路,改进设计方案。

这样,设计者不必动手搭接电路、调试验证,只需短时间内在计算机上操作即可设计出与实际系统相差无几的理想电路。

而且,FPGA器件采用标准化结构,体积小、集成度高、功耗低、速度快,可无限次反复编程,因此成为科研产品开发及其小型化的首选器件,其应用极为广泛。

3.1 FPGA工作原理FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。

现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。

FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。

FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。

3.2 FIR滤波器特点1)采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。

2)FPGA可做其它全定制或半定制ASIC电路的中试样片。

3)FPGA内部有丰富的触发器和I/O引脚。

4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。

5) FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。

同时,FPGA还存在以下五大优势。

1)性能:利用硬件并行的优势,FPGA打破了顺序执行的模式,在每个时钟周期内完成更多的处理任务,超越了数字信号处理器(DSP)的运算能力。

著名的分析与基准测试公司BDTI,发布基准表明在某些应用方面,FPGA每美元的处理能力是DSP解决方案的多倍。

2在硬件层面控制输入和输出(I/ O)为满足应用需求提供了更快速的响应时间和专业化的功能。

2)上市时间:尽管上市的限制条件越来越多,FPGA技术仍提供了灵活性和快速原型的能力。

用户可以测试一个想法或概念,并在硬件中完成验证,而无需经过自定制ASIC设计漫长的制造过程。

3由此用户就可在数小时内完成逐步的修改并进行FPGA设计迭代,省去了几周的时间。

商用现成(COTS)硬件可提供连接至用户可编程FPGA芯片的不同类型的I/O。

高层次的软件工具的日益普及降低了学习曲线与抽象层,并经常提供有用的IP核(预置功能)来实现高级控制与信号处理。

3)成本:自定制ASIC设计的非经常性工程(NRE)费用远远超过基于FPGA的硬件解决方案所产生的费用。

ASIC设计初期的巨大投资表明了原始设备制造商每年需要运输数千种芯片,但更多的最终用户需要的是自定义硬件功能,从而实现数十至数百种系统的开发。

可编程芯片的特性意味着用户可以节省制造成本以及漫长的交货组装时间。

系统的需求时时都会发生改变,但改变FPGA设计所产生的成本相对ASCI的巨额费用来说是微不足道的。

4)稳定性:软件工具提供了编程环境,FPGA电路是真正的编程“硬”执行过程。

基于处理器的系统往往包含了多个抽象层,可在多个进程之间计划任务、共享资源。

驱动层控制着硬件资源,而操作系统管理内存和处理器的带宽。

对于任何给定的处理器内核,一次只能执行一个指令,且基于处理器的系统时刻面临着严格限时的任务相互取占的风险。

而FPGA不使用操作系统,拥有真正的并行执行和专注于每一项任务的确定性硬件,可减少稳定性方面出现问题的可能。

5)长期维护:正如上文所提到的,FPGA芯片是现场可升级的,无需重新设计ASIC所涉及的时间与费用投入。

举例来说,数字通信协议包含了可随时间改变的规范,而基于ASIC的接口可能会造成维护和向前兼容方面的困难。

可重新配置的FPGA芯片能够适应未来需要作出的修改。

随着产品或系统成熟起来,用户无需花费时间重新设计硬件或修改电路板布局就能增强功能。

可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。

2、F IR数字滤波器实验结果之前的simulink仿真与matlab程序仿真仅仅是证明了算法是正确的,接下来我们需要把这个算法用Verilog HDL语言写出来,用modelsim仿真程序,用Signaltap II看输出波形。

该部分的verilog HDL代码如下:module FIR (input clk_1M,input reset_n,input[7:0]datain,//ADC的采样数据,无符号output[7:0]dataout//滤波后给DAC的数据);parameter signed COEF0 =12'd3;parameter signed COEF1 =-12'd2;parameter signed COEF2 =-12'd11;parameter signed COEF3 =12'd23;parameter signed COEF4 =12'd17;parameter signed COEF5 =-12'd100;parameter signed COEF6 =12'd61;parameter signed COEF7 =12'd520;parameter signed COEF8 =12'd520;parameter signed COEF9 =12'd61;parameter signed COEF10 = -12'd100;parameter signed COEF11 = 12'd17;parameter signed COEF12 = 12'd23;parameter signed COEF13 = -12'd11;parameter signed COEF14 = -12'd2;parameter signed COEF15 = 12'd3;reg signed[8:0] shift_buf0;//第一级延时寄存器reg signed [8:0] shift_buf1;//第二级延时寄存器reg signed [8:0] shift_buf2;//第三级延时寄存器reg signed [8:0] shift_buf3;//第四级延时寄存器reg signed [8:0] shift_buf4;//第五级延时寄存器reg signed [8:0] shift_buf5;//第六级延时寄存器reg signed [8:0] shift_buf6;//第七级延时寄存器reg signed [8:0] shift_buf7;//第八级延时寄存器reg signed [8:0] shift_buf8;//第九级延时寄存器reg signed [8:0] shift_buf9;//第十级延时寄存器reg signed [8:0] shift_buf10;//第十一级延时寄存器reg signed [8:0] shift_buf11;//第十二级延时寄存器reg signed [8:0] shift_buf12;//第十三级延时寄存器reg signed [8:0] shift_buf13;//第十四级延时寄存器reg signed [8:0] shift_buf14;//第十五级延时寄存器reg signed [8:0] shift_buf15;//第十六级延时寄存器reg signed [9:0] add_0_15;reg signed [9:0] add_1_14;reg signed [9:0] add_2_13;reg signed [9:0] add_3_12;reg signed [9:0] add_4_11;reg signed [9:0] add_5_10;reg signed [9:0] add_6_9;reg signed [9:0] add_7_8;reg signed [21:0] mul1;reg signed [21:0] mul2;reg signed[21:0] mul3;reg signed [21:0] mul4;reg signed [21:0] mul5;reg signed [21:0] mul6;reg signed [21:0] mul7;reg signed [21:0] mul8;reg signed [29:0] add;always@ (posedge clk_1M or negedge reset_n) beginif (!reset_n)beginshift_buf0 <= 9'd0;shift_buf1 <= 9'd0;shift_buf2 <= 9'd0;shift_buf3 <= 9'd0;shift_buf4 <= 9'd0;shift_buf5 <= 9'd0;shift_buf6 <= 9'd0;shift_buf7 <= 9'd0;shift_buf8 <= 9'd0;shift_buf9 <= 9'd0;shift_buf10<= 9'd0;shift_buf11<= 9'd0;shift_buf12<= 9'd0;shift_buf13<= 9'd0;shift_buf14<= 9'd0;shift_buf15<= 9'd0;endelsebeginshift_buf0 <= {1'b0,datain};shift_buf1 <= shift_buf0;shift_buf2 <= shift_buf1;shift_buf3 <= shift_buf2;shift_buf4 <= shift_buf3;shift_buf5 <= shift_buf4;shift_buf6 <= shift_buf5;shift_buf7 <= shift_buf6;shift_buf8 <= shift_buf7;shift_buf9 <= shift_buf8;shift_buf10<= shift_buf9;shift_buf11 <= shift_buf10;shift_buf12 <= shift_buf11;shift_buf13 <= shift_buf12;shift_buf14 <= shift_buf13;shift_buf15 <= shift_buf14;endendalways@ (posedge clk_1M or negedge reset_n) beginif (!reset_n)beginadd_0_15 <= 10'd0;add_1_14 <= 10'd0;add_2_13 <= 10'd0;add_3_12 <= 10'd0;add_4_11 <= 10'd0;add_5_10 <= 10'd0;add_6_9 <= 10'd0;add_7_8 <= 10'd0;endelsebeginadd_0_15 <= shift_buf0 + shift_buf15;add_1_14 <= shift_buf1 + shift_buf14;add_2_13 <= shift_buf2 + shift_buf13;add_3_12 <= shift_buf3 + shift_buf12;add_4_11 <= shift_buf4 + shift_buf11;add_5_10 <= shift_buf5 + shift_buf10;add_6_9 <= shift_buf6 + shift_buf9;add_7_8 <= shift_buf7 + shift_buf8;endendalways@ (posedge clk_1M or negedge reset_n) beginif (!reset_n)beginmul1 <= 22'd0;mul2 <= 22'd0;mul3 <= 22'd0;mul4 <= 22'd0;mul5 <= 22'd0;mul6 <= 22'd0;mul7 <= 22'd0;mul8 <= 22'd0;endelsebeginmul1 <= COEF0 * add_0_15;mul2 <= COEF1 * add_1_14;mul3 <= COEF2 * add_2_13;mul4 <= COEF3 * add_3_12;mul5 <= COEF4 * add_4_11;mul6 <= COEF5 * add_5_10;mul7 <= COEF6 * add_6_9;mul8 <= COEF7 * add_7_8;endendalways@ (posedge clk_1M or negedge reset_n)beginif (!reset_n)add <= 30'd0;elseadd <= mul1+mul2+mul3+mul4+mul5+mul6+mul7+mul8;endassign dataout = (add >=0)?add>>10 :0;endmodule同时,通过modelsim来仿真最终的结果,Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。

相关文档
最新文档