
FPGA
文章平均质量分 63
会飞的珠珠侠
这个作者很懒,什么都没留下…
展开
-
Verilog数字信号处理---基础1
本篇博文主要内容如下:1. 数字信号滤波器分类数字信号处理中滤波器主要分为两类:经典滤波器:主要解决的是输入信号的噪声分布在不同的频带上。通过一个线性滤波器后,可以有效的将噪声滤除。但是当信号和噪声的频带重叠时,经典滤波器失效。经典滤波器有:低通、带通、高通、带组和全通滤波器等;现代滤波器:主要解决的是从含有噪声的数据记录(或时间序列)中估计出信号的某些特征或者信号本身。其主要利用了随机信号的统计特征(例如自相关函数,功率谱函数)去估计有用信号...原创 2021-07-22 16:51:17 · 1335 阅读 · 0 评论 -
Verilog数字信号处理---先篇
本系列博客主要想理清楚如下内容:1. 数字信号处理一般是对输入的信号进行模数转换、时域频域转换、滤波器滤波、调制解调等处理。2. 数字滤波器有哪些?关注的参数有哪些?3. 滤波器的选取。根据不同的信号和要求设计处理模块的结构?4. matlab仿真及转换成fpga代码。5. 各种模块的Verilog实现。6. 工程设计的一般考虑原则。...原创 2021-07-22 15:53:31 · 540 阅读 · 0 评论 -
Verilog算法----溢出问题描述
1. 什么是溢出?2. 什么情况下会产生溢出?3. 溢出怎么解决?本文主要针对以上学习内容,进行思考与总结。1. 溢出的概念溢出主要是针对有符号数的加减,例如8位有符号的2进制数,表示的范围是-128~127,当数据的值太大而无法使用可用的数据格式表示时,就会溢出。如果大于这个范围,就是上溢出,如果小于就是下溢出。2. 溢出之后会有什么影响呢? 例如下图,一个n位的二进制数,最高位为符号位,那么能表示的正数位n-1个1,也就是,再增大1的话最高位变成...原创 2021-07-15 14:30:15 · 5789 阅读 · 1 评论 -
quartus 时序约束分析1----乘法器
本次分析乘法器实现的时序约束1. 代码 always@(posedge clk or negedge rst_n)begin if(rst_n==1'b0)begin dout <= 0; end else begin dout <= a_ff0 * b_ff0 * c_ff0 * d_ff0; end end2. 添加时序约束添加系统时钟,100M,然原创 2021-06-25 15:28:28 · 2383 阅读 · 0 评论 -
Verilog 乘法器实现及延迟分析
本次主要弄明白3个问题。1. 乘法器用Verilog如何实现?2. 乘法器的延迟问题表现在哪里?3. 如何控制运算的时间延迟?原创 2021-06-24 16:57:41 · 3303 阅读 · 2 评论 -
verilog 超前进位加法器(carry-look-ahead-adder)
与普通加法器相比,增加了超前进位逻辑,减少了由于逐位进位信号的传递所造成的延迟。参考下图4位加法器(来自夏宇闻老师:数字逻辑设计)原创 2021-06-23 15:07:27 · 7736 阅读 · 1 评论 -
quartus II FPGA 引脚电平设置
1. 当所有的未使用的PIN设置位输出接地时:主要指:所有的IC PIN,包括已经定义了输入或者输出的PIN,但是没有实际的信号进出(即未使用),测试为0v。反面讲,使用的PIN,是指实际定义并在逻辑里使用这个信号,且有实际负载的才算。否则就算定义了,如果没有实际使用也是未使用。2. 当所有的未使用的PIN设置为三态输入:3. 如果在PIN PLANNER中定义了输入弱上拉,那么未使用时测试为高电平。其余PIN受set the unused pins as "inputs tri-st.原创 2021-06-22 15:25:56 · 10138 阅读 · 5 评论 -
verilog可综合语句和不可综合语句总结
Verilog硬件描述语言有很完整的语法结构和系统,类似高级语言,这些语法结构的应用给我们的设计描述带来很多方便。但是,我们知道,Verilog是描述硬件电路的,它是建立在硬件电路的基础上的。有些语法结构是不能与实际硬件电路对应起来的,也就是说我们在把一个语言描述的程序映射成实际硬件电路中的结构时是不能实现的。下面总结出来的大部分综合工具支持或不支持的verilog语法结构。一.用verilog建立可综合模型的原则要保证Verilog HDL赋值语句的可综合性,在建模时应注意以下要点:..转载 2021-06-18 18:54:02 · 2453 阅读 · 0 评论 -
实战篇:UART串口连续接收实现
这篇博文主要解决在双通道幅频相可调的DDS信号发生器中串口连续接收一帧信息时时间间隔和接收实现问题。1. 多个字节接收如何实现?2. 目前常见的是uart传输8bit信息,但是如果要传输一帧,多个字节时,他们之间的间隔将多长?一、UART接收协议代码编写:主要包含波特率时钟生成、数据采样接收、标志信号生成;1. 模块分析时钟问题:1)为了避免使用组合逻辑产生的时钟触发导致的毛刺问题,所有的模块的时钟均采用系统时钟或者PLL产生的时钟,然后用组合逻辑产生的时钟作为使能; ...原创 2021-06-18 15:40:59 · 4667 阅读 · 2 评论 -
硬线逻辑电路和高速通用的微处理器芯片
对于实时性,数字信号处理对时间要求较严格时,使用高速通用的微处理器可能无法完成任务。需要使用高速FPGA这种专门设计的硬线逻辑电路实现。首先,通用微处理器芯片不会为某一种算法而去专门设计,它更偏向用能通用的。其次,运算的步骤必须通过编译后生成机器译码指令加载到存储器中,然后在未处理器芯片的控制下,按时钟的节拍,逐条取出指令,分析指令,执行指令,直到程序运行结束。最后也是重要的一点,FPGA是并行执行的,而微处理器是串行执行,这样在速度上,FPGA更有优势。但是对于同一功能用FPGA实现和用定制的AS原创 2021-06-10 10:44:55 · 149 阅读 · 0 评论 -
浅谈数字后端工程师的工作
为了弄明白数字IC后端工程师是做什么的,首先我们先来看看ASIC的整体设计流程,废话少说,先上图。1. 设计输入电路图或硬件描述语言2. 逻辑综合处理硬件描述语言,产生电路网表3. 系统划分将电路分成大小合适的块4. 功能仿真5.布图规划芯片上安排各宏模块的位置6.布局安排宏模块中标准单元的位置7.布线宏模块与单元之间的连接8.寄生参数提取提取连线的电阻、电容9.版图后仿真检查考虑连线后功能和时序是否正确以下内容摘自“永不止步,永无止境”的博客,地址:http:.转载 2021-06-10 10:41:53 · 1861 阅读 · 1 评论 -
实战篇:基于HT6221的红外遥控解码实现
1. HT6221是一款基于红外遥控协议(NEC协议)的遥控编码芯片。一共24个引脚,其PIN定义如下:When one of the keys (32 or 64 keys) is triggered for over 36ms, the oscillator is enabled and the chip is activated. If the key is pressed and held for 108ms or less, the 108ms transmission codes a原创 2021-06-08 14:12:54 · 2487 阅读 · 0 评论 -
实战篇:AD转换
本次按照IC 型号:ADC128S022,逐次逼近型,进行设计FPGA程序。1. IC的硬件连接及时序1)硬件框图:2)IC 接口定义:3)时序图如下:2. 程序设计1)模块连接关系FPGA 与AD IC的连接关系如下图: FPGA AD程序模块接口图如下: 2)SCLK时钟产生由于SCLK的时钟时...原创 2021-06-04 13:24:19 · 2528 阅读 · 0 评论 -
Altera 的FPGA IC的命名规则
Altera的Cyclone系列器件命名规则如下器件系列 + 器件类型(是否含有高速串行收发器) + LE逻辑单元数量 + 封装类型 + 高速串行收发器的数量(没有则不写) + 引脚数目 + 器件正常使用的温度范围 + 器件的速度等级 + 后缀下图为官方手册给出的信息基于EP4CE10F17C8N芯片详解Altera Cyclone系列器件命名规则以EP4CE10F17C8N芯片为例进行详细介绍:EP4C:Altera器件系列CycloneIV;E/GX:E表示普通逻辑资源丰富的...转载 2021-06-02 09:12:03 · 1093 阅读 · 0 评论 -
FPGA速度等级
FPGA速度等级转自http://wenku.baidu.com/view/ea793deef8c75fbfc77db263.html?from=rec最初接触speedgrade这个概念时,很是为Altera的-6、-7、-8速度等级逆向排序的方法困惑过一段时间。不很严密地说,“序号越低,速度等级越高”这是AlteraFPGA的排序方法,“序号越高,速度等级也越高”这是XilinxFPGA的排序方法。从那时起,就一直没搞明白speedgrade是怎么来的,唯一的概念是:同一款芯片可以...转载 2021-06-02 09:00:47 · 688 阅读 · 0 评论 -
阻塞和非阻塞
为了具体非抽样的理解verilog 语言中的阻塞和非阻塞问题及现象,通过仿真结果说明。从下图可以看出,4种情况中,非阻塞两表达式调换顺序后结果是一样的,因为表达式左端输出均取决于表达式右端变量之前一个时钟的的数值,调换顺序后并不会影响表达式的数值计算。而阻塞的两个表达式中,两表达式调换顺序结果是不一样的,因为表达式右端的数值变化其计算结果会立马赋值到左端,使得下一个表达式的左端表达式受上一个表达式的计算结果影响直接得到最新的赋值。从下图可以看出,只有q2是通过两个加法器,再通过一个触发器直接原创 2021-06-01 14:17:28 · 256 阅读 · 0 评论 -
实战篇:sdram+fifo调试
接着上篇文章,对SDRAM的FIFO优化进行仿真。针对下图的疑问点:1.图中第一处,SDRAM的数据线在写FIFO往SDRAM写的过程中位高阻态,但实际应该是wr_data才对。为何?在代码中,关于DQ以及ADDR的PIN定义没有位宽,更改后显示正常。图中第二处,rd_data在读FIFO从SDRAM中读数据,但这个过程实际上只是SDRAM写的状态,不应该有数据才对。为何?...原创 2021-05-28 20:40:38 · 1197 阅读 · 0 评论 -
实战篇:modelsim独立仿真
在本实战之前,均是用的quartus+modelsim联合仿真,发现在修改代码后,需要重新打开modelsim。如果每次均需要在观察界面下加入模块的信号以及对不同信号进行颜色标注时,联合仿真将表现得不友好,很无奈。因此,习惯使用独立仿真吧,在稍微大点得代码调试中将节省不少。...原创 2021-05-28 09:19:05 · 3144 阅读 · 1 评论 -
Quartus II 13.0打开后闪退
问题描述:上午还在用quartus软件和modelsim联合仿真,下午重新打开电脑,再打开quartus竟然直接闪退,点了好几次都没有是这样的。解决方法:第一步、尝试打开其他的项目工程文件,成功打开。说明是这个工程文件设置有问题,上次关闭可能有问题。第二步、...原创 2021-05-27 13:51:39 · 5262 阅读 · 3 评论 -
SDRAM控制器在连续读写数据时的优化
用FPGA对SDRAM的控制,存在一个主要缺点,在某些特殊的情况,读写请求可能会被忽略,而且数据的读写不能连续对数据流进行缓存,只能每次读写burst长度。因此在以数据流的形式访问SDRAM时,一般配合FIFO使用。问题点:1. FIFO容量的选取? 可以根据FIFO的容量控制MCU一次的存取量2. FIFO与SDRAM的读写请求的处理?FIFO什么时候读,什么时候写?写FIFO,在FIFO的存放数量超过burst长度,就拉高写使能;读FIFO,当FIFO的存放数量小于所能存放数..原创 2021-05-25 20:16:31 · 887 阅读 · 0 评论 -
modelsim-SE仿真error问题
1. 仿真时必须保证工程名,文件名和顶层文件的名称一致;2. 若出现定义问题error,如下说明xxx_cnt信号的使用在定义之前,原代码如下:可以看出在50多行就对信号进行了判断,但是信号的声明却在80多行。因此在实际使用中需要将所有信号均在端口定义完后进行声明。3. 如果是Error (10054): Verilog HDL File I/O error at sdram_ctrl_tb.v(6): can't open Verilog Design File "Sdram_pa原创 2021-05-24 10:39:05 · 2479 阅读 · 0 评论