FPGA
216549856
这个作者很懒,什么都没留下…
展开
-
等精度测频的原理和基于FPGA的实现
我们通过FPGA测量信号频率,一般来说有两种方案。传统测频法和等精度测频法。 方案一: 传统测频是在一段闸门时间内直接对输入信号的周期进行计数,也被叫做直接测频法。设闸门信号为gate,检测待测信号上升沿,然后判断gate是否为高电平,若为高电平便开始计数。这就存在gate的时间和待测信号周期数可能不成整数倍,导致产生+1hz或-1hz的误差。 方案二: 等精度测频可以弥补传统测频的缺点,它原创 2017-07-29 20:56:51 · 11532 阅读 · 9 评论 -
超前-滞后型DPLL提取位同步时钟的FPGA实现
好久没更新了。这几天研究了DPLL提取位同步时钟的FPGA实现。DPLL和PLL一样,由鉴相器、环路滤波器和数控振荡器组成。下面就是DPLL的基本框图。1.超前-滞后性数字鉴相器鉴相器的功能是检测本地估量信号和输入信号sigIn的相位关系。但只提取输入信号sigIn边沿处的相位关系。所以我们先由D触发器和异或门获得携带输入信号边沿信息的脉冲序列。在输入信号sigIn边沿处,如果本地原创 2017-10-30 19:36:55 · 5057 阅读 · 6 评论 -
FPGA——速度和面积的基本认识
速度是指整个工程稳定运行所能达到的最高时钟频率。 面积是值整个工程所需要的触发器、查找表或等效门的数量来衡量的。速度和面积是一对矛盾体,在追求速度的同时,必然会增大面积。在工程中,我们能做的只有在速度和面积中取最优的方案。之前在学习中,一直没有关注面积的问题,其实在我们资源有限的情况下,应该要注重面积的最小化。原创 2018-01-22 14:23:56 · 3229 阅读 · 0 评论 -
FPGA——for循环的些许思考
以前的学习的时候,没有用过verilog中的for循环。在数字电路的课堂上,也经常会想循环电路到底是一个什么样的电路呢?在我的脑海中,感觉循环电路就像那种重复利用已知电路的电路,我是这样理解的:for循环语句块中的执行语句是一样的,其生成的电路也是一样的,这个电路我把 它交做执行电路。那么循环电路是不是就是根据条件判断运行执行电路呢,就是那种类似于负反馈电路。根据执行电路输出的一个结果来决定下次原创 2018-01-16 20:30:46 · 5419 阅读 · 1 评论 -
FPGA——inout的用法
inout,顾名思义,也就是这个端口既可以输入数据也可以输出数据,但是他有一个规则:当他做输入端口时,一定要置为高阻态。reg out_data;reg test_cnt;//test端口输入\输入方向控制位,1 输入 0 输出assign test = test_cnt ? 1'bz : out_data;原创 2018-01-16 21:25:27 · 3353 阅读 · 0 评论 -
FPGA——时钟分频和时钟使能的思考
之前遇到时钟需要分频的时候,直接用计数器和源时钟产生,然后把这个分频时钟的上升沿作为敏感事件去写了,今天看了特权同学的书,也自己在网上看了看,这样做是不好的,降低了系统的可靠性,在实际工程中我们应该避免这中写法。采用时钟使能的方式,这样整个工程都是单一时钟电路,也利于分析维护。 建议的写法如下:module pro( input clk, input ...原创 2018-02-02 15:20:33 · 4992 阅读 · 0 评论 -
FPGA——关于状态机
状态机,是我大二在实验室学习时,学长给我们安排的任务之一。那个时候,我还没有学过《数电》,一直搞不明白状态机的意思,做了一周,都没有结果。任务是检测序列,检测到1011时输出一个高电平。我们都知道verilog语言依靠不同的always语句块实现了硬件电路的并行执行,但是在工程中,我们不仅要处理并行执行电路,偶尔也会遇到需要串行执行的电路要求。刚开始学习FPGA的话,可能会想到我们可以利...原创 2018-01-19 16:34:33 · 7085 阅读 · 2 评论 -
FPGA——我们到底要怎么搭复位电路
第一次看特权同学写的亚稳态的问题时,说实话,真的没有看懂。以前就是一直用的异步复位,同时也没有遇到过这样的问题。沉下心来,又仔细的看了一遍,发现了问题所在,特别是当你的工程特别大的时候,可能会非常严重。异步复位:复位信号和系统时钟信号的触发可以在任何时刻。二者相互独立。 同步复位:在系统时钟信号的触发下,复位信号有效。 用verilog表示会更明显:// 异步复位reg a;原创 2018-02-06 17:50:05 · 2268 阅读 · 0 评论 -
verilog中的generate语句
generate语句可以动态的生成verilog代码,当对矢量中的多个位进行重复操作时,或者当进行多个模块的实例引用的重复操作时,或者根据参数的定义来确定程序中是否应该包含某段Verilog代码的时候,使用生成语句能大大简化程序的编写过程。 生成语句生成的实例范围,关键字generate-endgenerate用来指定该范围。生成实例可以是以下的一个或多个类型: (...转载 2018-04-01 13:15:23 · 3612 阅读 · 0 评论 -
避免SignalTap优化掉想观察的寄存器
如果我们想观察的寄存器和输出没有关系,那么SignalTab会把它优化掉,导致我们无法观察。 可以使用下面语句修饰我们想要观察的寄存器,避免被其优化掉。 1reg[19:0] data;/*synthesis noprune*/2(*noprune*)reg[19:0] data;...原创 2018-07-19 10:51:58 · 2062 阅读 · 0 评论 -
FPGA利用待分频时钟实现任意分频
FPGA使用带分频时钟作任意分频。原创 2017-07-24 14:29:13 · 6809 阅读 · 0 评论 -
FPGA的边沿检测
FPGA的边沿检测原创 2017-06-28 16:57:05 · 873 阅读 · 0 评论 -
固化FPGA的程序,使用QuartusⅡ 15
固化FPGA的程序,使用QuartusⅡ 15原创 2017-07-07 17:49:38 · 1823 阅读 · 0 评论 -
FPGA利用FIFO做数据缓冲
今天尝试使用了Quartus Ⅱ 15.1 的FIFO的IP核。 ——————————————————————————————————————— 简单介绍一下FIFO。FIFO(First Input First Output),很容易理解,就是先进先出,和数据结构里的队列一样。举一个通俗的例子,在超市买东西,结账的时候,大家都在排队,先排队的人先结账走人,不在这里逗留(这点和RAM不同)。所以原创 2017-07-30 19:58:49 · 13462 阅读 · 0 评论 -
FFT频率和实际物理频率的分析
之前有转载过一篇关于频谱分析的博客,今天想利用FPGA做FFT的有关计算,仔细查看了那篇博客发现原博主写的是一塌糊涂,被逼无奈拿起前几周考完期末考的《数字信号处理》,同时网上也有查资料,终于有一点思路了。 ———————————————————————————————————————————— FFT是快速傅里叶变换,是离散傅里叶变换的快速算法。我们想要利用FFT计算频率或者观察频谱特性,离不开原创 2017-07-31 10:52:30 · 11824 阅读 · 0 评论 -
Quartus Ⅱ 15.1 将Verilog模块程序封装
将模块程序封装,我们可以更加直观查看每个模块间的联系。先放一张成果图,博主做完数电实验就忘干净了,所以自己又摸索了一遍,最后成品可能不是太好看,怪自己手残。下面是详细步骤:首先要在files一栏,右击想要封装的模块然后选择 Create Symbol Files for Current Files生成文件成功后,新建一个Block Diagram/S原创 2017-07-25 17:40:13 · 17632 阅读 · 0 评论 -
简易频谱分析仪和频率特性测试仪的原理
17年电赛的元器件清单下来了,基本仪器有频率特性测试仪,且13年国赛出现过,15年国赛也出现过频谱分析仪,知乎上有人猜测今年依然会出频域测量的题,这几天我就找了不少资料。了解了频谱分析仪和频率特性测试仪的原理。 ————————————————————————————————————————————————————— 频谱分析仪 频谱分析仪主要用来分析信号中各频率成分。主要有多滤原创 2017-08-04 16:07:33 · 7340 阅读 · 1 评论 -
利用FFT频谱分析测量频率与幅值
之前做比赛的时候,发现这篇博客的访问量激增,意识到一丝不妙的感觉,就赶紧删除了,今天补一下。之前幅值的问题也解决了。是我没把输入信号转成有符号信号送到FFT,而是直接将外部信号送入至FFT,虽然频率是对的,但是幅值就出现了很大的问题。 将信号转为有符号信号后,经FFT后得到最大值,然后根据AD的位宽,再转成响应的幅值。 —————————————————————————————————— ...原创 2018-08-31 17:35:16 · 15922 阅读 · 2 评论