
FPGA
文章平均质量分 88
朽月
苏州大学信息与通信工程专业研究生,研究方向自适应信号处理,擅长信号处理算法的FPGA实现,对信号处理与FPGA技术有浓厚兴趣。21年将就职于恩智浦,职业方向为SOC设计工程师。希望大家共同进步。
展开
-
VIVADO除法IP注意事项
VIVADO除法IP注意事项参考文献项目简述注意事项第一个注意事项第二个注意事项第三个注意事项第四个注意事项总结参考文献[1]、V3学院——软件无线电课程项目简述这篇博客主要记录VIVADO中除法IP的注意事项,遇见一些新的知识点应该做相应的笔记。本次实验所用的软硬件环境如下:[1]、VIVADO 2019.2[2]、Modelsim 10.7注意事项第一个注意事项首先可以在除法IP的定制界面看到被除数、除数、商的位宽有详细的说明:从上面的位宽信息,我们可以发现被除数有18位整数,除原创 2020-08-11 20:37:48 · 5852 阅读 · 6 评论 -
真正理解阻塞逻辑赋值与非阻塞逻辑赋值
真正理解阻塞逻辑赋值与非阻塞逻辑赋值参考文献项目简述举例说明正确代码可综合代码测试代码仿真结果错误代码可综合代码仿真结果总结参考文献[1]、数字芯片实验室(微信公众号)项目简述因为最近参加Xilinx暑假计划比较忙,已经很久没写文章了,这篇博客我们将重点讲述Verilog中阻塞逻辑赋值‘=’、非阻塞逻辑赋值‘<=’。看到这里不免大家要嘲笑,这谁不知道,文章的内容咋么越写越倒退了。其实不是这样,绝大多数的同学理解阻塞赋值与非阻塞赋值是组合逻辑语句用阻塞赋值 ‘=’、时序逻辑用非阻塞逻辑赋值‘&l原创 2020-08-05 21:53:41 · 6544 阅读 · 1 评论 -
异步FIFO的设计
异步FIFO的设计参考文献项目简述异步FIFO设计难点空满信号的产生1读写地址跨时钟域问题空满信号的产生1多位二进制码如何转化为格雷码异步FIFO系统框图异步FIFO代码:测试文件实验结果总结参考文献[1]、小鱼FPGA(微信公众号)[2]、aslmer(博客园)项目简述之前写过一篇异步FIFO的注意点,详情见博客。但是不免有许多同学要问为什么官方的IP都会出现这种问题,难道是官方的IP设计的不好?这种可能性肯定不大,因为官方的IP肯定设计的比较完美。那么肯定是这种现象在异步FIFO的设计中是不可原创 2020-07-16 00:57:57 · 3312 阅读 · 5 评论 -
基于FPGA的PCIE设计(3)
PCIE协议基础参考文献项目简述PCIE概述参考文献[1]、移知网项目简述前面已经有两篇博客介绍了PCIE,相信大家应该都看不懂,前面的博客主要讲解了PCIE在FPGA中的实现,那么我们就接着学习这个协议。在接下来的几篇博客,我将尽可能的讲解一些我学会的PCIE的知识,但是要想真正学会还是得看Base Specification。这里再次说明,如果只是为了使用PCIE那么完全没有必要对PCIE的协议了解太深,因为在FPGA里面有相应的IP。这里说明一下XDMA的缺点,因为XDMA使用起来非常方便,但原创 2020-07-09 15:59:41 · 8238 阅读 · 0 评论 -
基于ZYNQ的千兆网项目(3)
基于ZYNQ的UDP实现项目简述UDP简述PL端设计PS端设计下板测试项目简述前面的文章讲解了TCP客户机与主机在ZYNQ上面的实现,其实说白了就是调用现成的API函数,这点与FPGA的设计其安全不同,因为进行FPGA设计必须要完全理解底层才可以进行相应的设计。本篇博客我们将讲解ZYNQ实现UDP协议。关于UDP的理论部分,我们在使用FPGA实现的时候已经进行了完整的讲解,详细请查看基于FPGA的千兆以太网的实现,上面对UDP的特点、组包、CRC进行了详细的论证。这里建议大家一定要学习, 虽然即使不明白原创 2020-07-01 10:01:39 · 7158 阅读 · 1 评论 -
基于ZYNQ的千兆网项目(2)
基于ZYNQ的TCP Server实现项目描述PL端设计PS端设计下板测试总结项目描述上一篇文章我们讲解了ZYNQ做Client来进行与PC机进行通信,那么相应的ZYNQ就可以做Server来进行与PC机得通信,此时PC机就是Client。这种通信方式在板卡与板卡之间得通信中还是比较常见,所以就用这篇文章来进行相应得讲解。工程描述:讲ZYNQ当作Server来进行与上位机通信,实现千兆网的循环测试。本次实验所用到的软硬件环境如下:1、VIVADO 2019.12、米联客MZ7015FA开发板3原创 2020-06-30 22:53:13 · 3888 阅读 · 1 评论 -
基于ZYNQ的千兆网项目(1)
基于ZYNQ的TCP Client实现参考文献项目描述TCP协议简述TCP 三次握手TCP 数据传输TCP 四次挥手PL端设计PS端设计下板测试总结参考文献[1]、inner_peace8[2]、米联客项目描述前面的文章我们已经讲解过基于FPGA的千兆以太网的实现,该协议主要使用的是UDP协议,文章中对UDP协议的理论部分也进行了详细的介绍,但是UDP协议是不稳定的协议类型,再进行精准传输的时候有所缺陷。与UDP相反,TCP协议可以保证数据的准确性,但是因为TCP协议的复杂性,目前还没有商用的纯逻原创 2020-06-30 21:40:28 · 9550 阅读 · 1 评论 -
基于ZYNQ的SD卡的访问
基于ZYNQ的SD卡的访问参考文献项目简述FAT文件架构简述参考文献[1].V3学院项目简述现在FPGA板卡上面常用的存储设备是SD卡,也经常将BOOT文件下载到SD卡中启动。那么这篇文章我们将讲解使用API函数来进行SD卡的读写,当然使用纯FPGA写Verilog也是可以读写SD卡,遵循SPI协议,后面的文章我们会进行相应的介绍,这篇文章先来讲解简单的C语言访问SD卡。工程描述:ZYNQ利用FAT文件系统对SD卡些一张图片。本次实验所用到的软硬件环境如下:1、VIVADO 2019.12、原创 2020-06-28 11:22:27 · 2030 阅读 · 0 评论 -
基于ZYNQ的中断的使用(4)
基于ZYNQ的私有中断的使用项目简述私用中断简述PS端设计PL端设计下板测试总结项目简述前面的文章我们已经讲解了ZYNQ的共享中断、软中断,每种中断的类型我们都进行了相应的讲解。ZYNQ的三种中断类型还差一个私有中断我们没有进行讲解,接下来我们将以CPU的私有定时器为例来进行相应私有中断的讲解。工程描述:CPU利用私有定时器进行定时,每隔1s产生相应的中断,并且通过串口进行相应的打印。本次实验所用到的软硬件环境如下:1、VIVADO 2019.12、米联客MZ7015FA开发板私用中断简述包原创 2020-06-26 14:55:13 · 1962 阅读 · 1 评论 -
基于ZYNQ的中断的使用(3)
基于ZYNQ的串口中断的使用项目简述共享中断概述PL端设计PS端设计项目简述前面的文章我们已经讲过CPU之间的软中断,PS与PL之间的共享中断,但是共享中断还有一种数据类型也就是PS外设引起的中断。在学习本篇文章的同时一定要学习前面的两篇文章,可以对ZYNQ的中断有一个总体的认知。本篇文章将以UART为例来讲解PS的外设中断的使用。关于UART在ZYNQ的PS端相信大家都使用过print来输出相应的数据。但是UART如何接收数据是不是大家还没有真正的使用过,UART接收数据一般情况下我们使用的是中断来进原创 2020-06-26 14:01:01 · 2735 阅读 · 0 评论 -
基于ZYNQ的中断的使用(2)
基于ZYNQ的共享中断的使用参考文献项目简述共享中断简述PL端设计PS端设计测试结果总结参考文献[1].V3学院项目简述前面的一篇文章我们已经讲解了ZYNQ中软中断的使用,通过学习CPU之间的相互中断,我们已经学习了软中断,那么接下来我们将进行共享中断的学习,从上一篇文章我们可知,共享中断主要分为两类:PL给CPU的中断,PS的IO中断。这里提醒读者一定要看上一篇文章,否则学习会特别困难。工程描述:PL每隔1s发起中断信号,PS接收终端并通过串口打印信息。本次实验所用到的软硬件环境如下:1、V原创 2020-06-24 16:59:43 · 1245 阅读 · 5 评论 -
基于ZYNQ的中断的使用(1)
基于ZYNQ的软中断的使用参考文献项目简述ZYNQ中断描述PL端设计PS端设计CPU0代码CPU1代码测试结果总结参考文献[1]、V3学院[2]、 judyzhong项目简述接触过单片机、ARM的同学应该都了解中断,因为这是保证CPU实时性的前提。学到这里的同学会不免发出疑惑,为什么FPGA没事有实时性的要求呢,因为FPGA本身就是并发执行,这也是其本身最重要的特性。ZYNQ中有两个CPU,又分为不同的中断类型,将在下面的文章中一一介绍。如果学不会中断,那么ZYNQ的学习将没有意义。工程描述:运原创 2020-06-24 16:20:19 · 6754 阅读 · 0 评论 -
基于ZYNQ的双核CPU之间的通信
基于ZYNQ的AMP架构双核应用程序开发项目简述CPU0代码CPU1代码运行结果双核CPU的固化SD卡总结项目简述我们都知道ZYNQ中有两个ARM核,但是如何使ZYNQ运行这两个ARM核,以及双核之间的数据如何进行交互是非常重要的问题。双核CPU的运行方式主要有两种:1、SMP 对称处理器架构 ,2、 AMP 非对称处理器架构,SMP结构双核之间的关系比较密切,AMP架构双核之间逻辑关系较小,开发难度也比较简单。工程描述:运行ZYNQ的两个ARM核,同时利用OCM3进行双核之间简单的数据交互。本次实原创 2020-06-23 16:28:46 · 9151 阅读 · 7 评论 -
基于FPGA的AXI协议讲解(2)
基于FPGA的AXI_Full协议讲解参考文献项目简述AXI_Full读协议VIVADO建立AXI4_Full IPAXI_Full读项目AXI_Full读协议代码PS端代码下板测试代码参考文献[1]、V3学院项目简述前一篇文章我们已经进行讲解了AXI_Lite协议,该协议的突发长度是1,在工程中主要起的作用是配置寄存器。 在FPGA中最常见的就是大数据的传输,一般我们使用AXI_Full协议来进行数据的传输。这篇文章我们主要讲解使用AXI_Full协议来进行ZYNQ端的DDR3的读写,当然如果不是原创 2020-06-20 20:10:02 · 5006 阅读 · 1 评论 -
基于FPGA的AXI协议讲解(1)
基于FPGA的AXI_Lite协议讲解项目简述AXI协议简述项目简述这篇文章我们主要讲解AXI_Lite协议,主要内容包括AXI_Lite协议在FPGA中主要起到的作用,遵循的时序要求是什么,在FPGA中咋么编写Verilog代码。本次实验将主要讲解AXI_Lite从机的协议,PS端通过AXI_Lite协议写寄存器控制PL端的LED、通过读寄存器读取PL端KEY的按键值。 这里为什么讲解AXI_Lite从机协议,因为PS端我们一般作为主机,那么需要我们实现的PL端的Verilog代码自然是从机本次实原创 2020-06-19 13:41:11 · 6355 阅读 · 1 评论 -
基于FPGA的CORDIC算法的实现(2)
CORDIC算法旋转模式原理介绍及FPGA实现参考文献项目简述旋转模式的推导过程参考文献[1].碎碎思项目简述我们上一篇文章已经讲解了CORDIC的向量模式,通过算法的向量模式我们可以计算向量的幅值与相位角,那么通过算法的旋转模式我们可以计算一个角度的正余弦值。两个模式的不同点就是初始条件与终止条件的设置,相同点都是利用坐标旋转来实现的。这篇博客将结合向量模式的推到原理来进一步说明旋转模式的推导过程。旋转模式的推导过程...原创 2020-06-15 20:38:32 · 1965 阅读 · 1 评论 -
基于FPGA的CORDIC算法的实现(1)
CORDIC算法向量模式原理介绍及FPGA实现参考文献项目简述CORDIC算法向量模式原理CIRDIC算法向量模式推导步骤一CIRDIC算法向量模式推导步骤二CIRDIC算法向量模式推导步骤三CIRDIC算法向量模式推导步骤三MATLAB实现参考文献[1].liyuanbhu[2].碎碎思[3].电子发烧友(这门课里面的代码写的非常棒,建议有条件的同学可以与板卡一起购买,记住一定是带着板卡,这里不再多说)项目简述基本上懂点FPGA信号处理操作的同学都听过CORDIC算法,该算法可以被使用计算常见原创 2020-06-13 12:32:22 · 5499 阅读 · 3 评论 -
基于FPGA的滑动累加器的设计
基于FPGA的滑动累加器的设计项目简述MATLAB代码FPGA代码FPGA逻辑代码FPGA测试代码MATLAB测试代码参考文献总结项目简述滑动累加器在算法的实现过程中经常碰见,最典型的就是均值滤波。相信大家对滑动累加的概念已经有了不错的掌握,其实就是给原始数据加一个窗然后求这个窗里面所有数据之和。本次实验我们先使用MATLAB实现滑动累加器,然后使用VIVADO实现滑动累加器,最后将两组生成的数据在MATLAB中对比从而相互验证我们实验的正确性。本次实验所用到的软硬件环境如下:1、VIVADO 20原创 2020-06-07 21:34:57 · 4275 阅读 · 4 评论 -
基于FPGA的FFT算法实现(2)
基于FPGA的FFT IP的实时配置项目简述项目简述前面我们已经讲解过Xilinx中FFT IP的使用,但是使用的时候IP的配置接口我们没有进行相应的讲解,直接使用GUI配置好的接口,这在现实应用中很不方方便,会让人感觉到还不如自己手写一个FFT算法,当然博主也可完全手撕FFT、CORDIC代码,但是把IP用好了绝对比我们手写的代码要好用的多。这篇博客主要讲解FFT IP的重配置及其参数的意义,最后将给出Modelsim与MATLAB的两盒验证。本次实验所使用的软硬件环境如下:1、VIVADO 20原创 2020-06-04 18:14:43 · 9373 阅读 · 1 评论 -
VIVADO中的IP核在MATLAB中仿真
VIVADO中的IP核在MATLAB中仿真项目简述VIVADO建立FFT IP核MATLAB调用FFT IP核项目简述我们都会用MATLAB进行算法验证,但是经常会发现如果VIVADO中调用了IP核,那么最终会发现VIVADO与MATLAB之间的数据不可以统一的对应起来。那么,MATLAB验证的效果就会大大下降,那么可不可以想办法将VIVADO中的IP核封装成一个函数在MATLAB中调用呢?答案是可以的。这篇博客主要以FFT的IP核为例讲解封装成一个函数并且成功在MATLAB中调用。本次实验所使用的软原创 2020-06-03 16:38:03 · 6474 阅读 · 9 评论 -
基于FPGA的映射调制实现
基于FPGA的映射调制实现项目简述数学建模MATLAB仿真FPGA代码FPGA映射的代码FPGA的映射测试代码FPGA与MATLAB的交叉验证小结参考文献总结项目简述在通信过程中,经常能碰见调制解调,这里将讲解一种映射调制的方法,并且给出相应的代码供大家学习。一般调制位于无线通信中比较靠后的未知,在交织之后。这里的映射调制并没有介入载波,只是进行了相应的星座图映射,至于最后载波的加入,将在后面的博客中学习。数学建模首先我们常见的QPSK与16-QAM的星座图如下:由星座图可以得到编码之后的如下信原创 2020-05-31 16:09:32 · 3567 阅读 · 0 评论 -
FPGA软件操作技巧
FPGA软件操作技巧项目总结软件操作技巧常使用的芯片文件后缀总结项目总结这篇博客我们比较随意,记录一些软件的技巧,常见的芯片名字,常见的文件后缀意义等等,当然这篇博客是连载的会一直添加进来新的知识。软件操作技巧常使用的芯片文件后缀总结创作不易,认为文章有帮助的同学们可以关注、点赞、转发支持。为行业贡献及其微小的一部分。或者对文章有什么看法或者需要更近一步交流的同学,可以加入下面的群:...原创 2020-05-25 20:39:21 · 849 阅读 · 0 评论 -
基于FPGA交织的实现
基于FPGA交织的实现项目简述数学模型项目简述交织多么好听的名字,第一次听见这个名字是在移动通信的课程中,当时就对这个名字一亮。交织其实就是把原有的码元顺序打乱进行发送,说白了就是矩阵变换。至于为什么要把原有的码元顺序打乱,是因为现实中传送的码元每一段都有固定的校验位,通过该校验位可以在码元错误较少的情况下进行纠错。而实际中受环境影响的码元是突发性错误,那么我们先经过交织之后传送的码元产生的突发性错误,经过解交织之后就会把原有的突发性错误转变成离散性错误,那么就可以有效的利用校验位进行纠错。这也是交织在原创 2020-05-25 13:50:30 · 6252 阅读 · 5 评论 -
ZYNQ学习简记
ZYNQ学习笔记项目简述ZYNQ学习笔记总结项目简述ZYNQ是Xilinx公司比较具有特色的SOC芯片,内部分为PS与PL端。其中PS端包括ARM内核,PL端就是我们常说的FPGA部分。PS端的开发与嵌入式开发的流程一样,都是在ARM内核上面的操作,一般是基于C语言,博客的后面部分会进行相应的讲解。至于PL端的开发,我们前面讲述的都是PL端的开发。学习PS端的开发,我们只需要学习相应的嵌入式教程部分,然后再学习PL端与PS端的数据交互方式即可。接下来,我将把我学习ZYNQ时记录的笔记以图片的方式附加上原创 2020-05-24 09:43:36 · 2732 阅读 · 3 评论 -
基于FPGA扰码的实现
基于FPGA扰码的实现项目简述扰码数学原理扰码的MATLAB实现扰码的FPGA实现扰码FPGA的代码FPGA测试代码仿真结果参考文献总结项目简述扰码就是作有规律的随机化处理后的信码。作为现代通信的关键技术之一,扰码是为了提高传输数据的定时恢复能力和保密性而在比特层对需要传输的数据进行随机化处理的技术。这与扰码为什么有利于定时恢复与保密性的功能,首先保密性是因为解密方不知道扰码的生成多项式会给破译带来困难;定时恢复是因为扰码会消除连续的0与1,这有利于时钟的恢复。扰码在通信系统中的位置如下:扰码的优原创 2020-05-22 19:59:17 · 5113 阅读 · 1 评论 -
基于FPGA的PCIE设计(2)
基于VIVADO的PCIE IP的使用项目简述项目简述上一篇博客我们已经对PCIE协议进行了粗略的讲解,为什么粗略呢?因为详细的我也不会。那么不明白具体的PCIE协议,我们就不能在FPGA中使用PCIE来进行高速数据传输了吗?答案是否定的。因为Xilinx官方给我们提供了完善的PCIE IP,基于这些IP我们设置不需要知道TLP包的组包原理我们便可以把PCIE使用起来。这篇博客我们主要把FPGA作为endpoint来进行讲解,当然也对作为root port进行简单的描述。我们使用的主要IP是XDMA,主原创 2020-05-20 13:06:54 · 8361 阅读 · 0 评论 -
VIVADO使用ila抓取的波形转换成Modelsim打开
VIVADO使用ila抓取的波形转换成Modelsim打开项目简述操作步骤总结项目简述相信使用过VIVADO在线逻辑分析仪的同学都可以知道这个分析工具在操作上很不方便。在线逻辑分析仪的界面操作和VIVADO自带的仿真工具一摸一样,同样正是因为VIVADO自带的仿真工具操作不方便而且运行速度较慢,我们使用了Modelsim仿真软件。但是我们一般使用ila抓取的信号还是在VIVADO中,这就造成了操作的不方便。这篇博客我们主要讲解讲ila抓取的包在Modelsim中打开,这样可以增加工具的灵活性。操作步骤原创 2020-05-19 12:15:03 · 2860 阅读 · 0 评论 -
基于FPGA的PCIE设计(1)
PCIE基本原理简单概述项目简述PCIE简介项目简述PCIE技术在FPGA中的应用已经非常普遍,也是同学们学习的一个难点。我们会在本篇博客中讲解PCIE的理论知识,供大家了解PCIE。在下一篇博客中讲解PCIE在VIVADO中的应用,这里使用简单的方式,即XDMA。或许直接使用XDMA便可以不用了解PCIE的基础知识,但是为了知识的完整性,我们还是先在这篇博客中简要介绍PCIE。PCIE简介PCI Express 是用来互联计算机和外围设备的高速接口总线,是一种能够应用于移动设备,台式电脑,工作站,原创 2020-05-14 19:20:49 · 16322 阅读 · 2 评论 -
基于FPGA的图像浮雕效果实现
基于FPGA的图像浮雕效果实现项目简述算法原理及MATLAB实现浮雕效果的FPGA实现FPGA工程代码下板效果参考文献总结项目简述为什么要做这个小项目,因为最近正在在学习FPGA开源工作室中的FPGA图像处理的文章。发现这个小例子非常容易实现。就把这个小算法给复现了。这个基本上不能称之为一个项目,因为太简单了。但是,这里面涉及了真彩图转变成灰度图像的一个方法,在书写的时候我们也用到了除法器Ip(为了介绍IP专门使用的触除法器),有符号数的使用。所以,这里我们这里进行简单的介绍。算法原理及MATLAB实原创 2020-05-12 20:25:41 · 1719 阅读 · 6 评论 -
FPGA 静态时序分析与约束(3)
VIVADO时序约束工具简要操作项目简述基于原语的时序操作时钟的约束输入时钟的约束生成时钟的约束项目简述前面我们已经介绍了时序约束原理、参数的计算、Quartus II中时序约束方法。接下来,我们进行Xlinx的EDA工具VIVADO的时序约束方法。该约束方法我们将按照下图依次讲解,具体参数的计算我们在这篇博客中也将与前面的理论相联系。这篇博客中,我们分别进行原语、GUI的操作,使大家更容易明白其时序约束原理与时序参数。基于原语的时序操作首先这里需要注意的是,在进行时序约束之前一定要绑定引脚,否则原创 2020-05-10 18:05:02 · 3252 阅读 · 6 评论 -
FPGA 静态时序分析与约束(2)
Quartus II时序约束工具简要操作项目简述时序约束步骤约束时钟创建输入时钟创建生成时钟约束自己分频的时钟输入延迟的约束输出延迟的约束设置时序例外设置多周期路径设置false路径操作小结总结项目简述这里提醒,在看这篇文章之前一定要先把前一篇时序约束的文章看完,前面一篇才是重点,这篇就是一些简单的工具使用。我们前面的一篇博客已经讲解了FPGA内部、IO接口的延迟约束。对建立时间、保持时间进行了深入的讲解,并且通过几个例子让大家明白了input delay max、input delay min、ou原创 2020-05-10 14:02:45 · 3684 阅读 · 0 评论 -
FPGA 静态时序分析与约束(1)
静态时序分析与约束中的概念项目总结时序术语总结与解释参考文献项目总结静态时序分析是指我们手动或者EDA工具按照芯片寄存器、查找表、内部连线所需要的固定的时间分析时序路径是否有违例的情况,并进行相应的约束。既然有静态时序分析,那么肯定有动态时序分析。动态时序分析也就是我们常说的后仿真,在实际中很少用到。静态时序分析一定要把握好以下前提:1、静态时序分析时一定要绑好FPGA的引脚,否则布局布线没...原创 2020-05-02 11:13:58 · 4819 阅读 · 5 评论 -
FPGA时钟的相关总结
Xilinx FPGA的时钟总结Xilinx 7系列FPGA专用时钟引脚标志本篇博客,博主将总结FPGA时钟方面的问题。以前碰到过一些时钟的问题,但是由于没记录也就都忘记了,所以这篇文章将用来记录FPGA中时钟的问题。这篇文章属于持续更新的系列,将总结接下来时钟的注意点。FPGA时序问题主要就是体现在时钟上面,虽然可以设置IO Delay,但是我还是喜欢使用PLL来调节相位。该方法虽然不好,但...原创 2020-04-28 14:49:10 · 3661 阅读 · 0 评论 -
Verilog语法误区总结
Verilog常见的误区组合逻辑锁存器的生成Verilog语句中signed的作用总结组合逻辑锁存器的生成在Verilog语言组合逻辑的书写中,我们经常会写下面语句:assign din_x = rvalid == 1'b1 ? {{24{din[9]}},din}: din_x;或者,always @(*) if(ext_valid == 1...原创 2020-04-27 13:13:19 · 1292 阅读 · 1 评论 -
基于FPGA的CIC滤波器设计(2)——以数字上下变频为例讲解
单级CIC滤波器理论与设计项目简述多级CIC滤波器多级CIC滤波器的抽取操作多级CIC滤波器的内插操作多级CIC滤波器的抽取的MATLAB实现项目简述我们上一篇博客对CIC滤波器的理论与实现进行了详细的介绍,相信同学们从前一篇博客可以进行相应的学习。但是CIC滤波器本质上就是 低通滤波器。为什么如此常用,只是因为CIC滤波器构成简单不需要乘法器,运行速度快,在通信中的上下变频中非常常用。当然C...原创 2020-04-25 17:14:26 · 7920 阅读 · 6 评论 -
基于FPGA的CIC滤波器设计(1)
单级CIC滤波器理论与设计项目简述多速率信号处理项目简述工欲善其事必先利其器,信号处理有强大的理论支撑。若是没有掌握这些理论,只是随便找一些符合要求的代码,那么自己很难更近一步。而且算法本身就是FPGA工程师的难点,而不是硬件逻辑。所以,本篇文章我们将进行CIC抗混叠滤波器的设计,这在信号处理中具有及其重要的地位。接下来,我们将从理论与FPGA设计的两个角度来讲解CIC的设计多速率信号处理...原创 2020-04-24 10:13:27 · 12155 阅读 · 15 评论 -
VHDL语言的学习
FPGA设计语言VHDL的学习语言简述VHDL与Verilog语言对比VHDL学习资料总结语言简述VHDL是较早的硬件描述语句,其逻辑严谨、抽象描述能力强是其特点。但是由于语法复杂学的人也变得少了起来,致使大多数同学学习verilog语言。但是,VHDL语法依旧具有很大的市场份额,如果说一个FPGA工程师不会VHDL语言,这V绝对是一个硬伤,所以这篇文章我们将给出学习VHDL语言的详细方法。...原创 2020-04-23 10:48:56 · 4332 阅读 · 0 评论 -
基于FPGA的人脸检测(2)
MATLABl利用肤色检测模型工程代码简述工程代码仿真结果简述本来打算两篇博客合成一篇博客发布,但是因为CSDN博客字数的限制,这里将肤色检测的代码在该篇博客中给出。工程代码这里因为与前面的工程相比,代码变化的比较多,所以我们这里给出整个工程的代码:top模块:`timescale 1ns / 1ps// ***************************************...原创 2020-04-21 14:21:09 · 4318 阅读 · 2 评论 -
基于FPGA的人脸检测(1)
FPGA利用肤色检测模型项目简述肤色检测肤色检测代码肤色检测结果腐蚀图像腐蚀图像代码腐蚀之后的图像图像定位图像定位代码最终图像结果总结项目简述我们上一篇文章讲解了MATLABl利用肤色检测模型进行人脸检测,也给出了完整的MATLAB代码。同学们学习本篇博客的时候一定要先学习上篇文章,因为上篇文章介绍了整个算法的流程,比看FPGA的实现要简单的多。本篇博客,我们将利用FPGA实现一副图片中的人...原创 2020-04-21 14:18:37 · 9435 阅读 · 6 评论 -
基于MATLAB的人脸检测
MATLABl利用肤色检测模型项目简述项目流程图肤色检测图像腐蚀图像定位MATLAB代码仿真结果总结项目简述我们前面已经学习了一些图像处理算法的应用,那么本次实验将进行一个比较综合的项目。本次算法中,我们将利用肤色模型检测算法定位人脸的位置。这篇文章我们首先利用MATLAB实现该算法,等到下一篇文章再用FPGA实现该算法。项目流程图整个项目的流程图如上图,我们利用上面的程序框图进行书写便...原创 2020-04-10 21:23:04 · 8907 阅读 · 5 评论