FPGA
文章平均质量分 86
FPGADesigner
目标成为FPGA开发设计/仿真验证的预备军~
展开
-
FPGA基础设计(11)Verilog任务、函数、系统任务、系统函数
目录1.概述2.函数(function)3.任务(task)4.系统任务4.1 显示任务4.1.1 display和write任务4.1.2 strobe监控4.1.3 连续监控4.2 文件I/O任务和函数4.2.1 打开文件和关闭文件4.2.2 文件输出4.2.3 数据转换为字符串4.2.4 读取文件内容4.2.5 文件I/O错误状态4.2.6 EOF检测4.2.7 文件定位4.2.8 读取数据...原创 2019-11-02 14:25:35 · 11658 阅读 · 5 评论 -
FPGA基础设计(10)Verilog行为级建模(过程赋值)
目录1.过程赋值1.1 特性11.2 特性22.过程连续赋值3.case语句3.1 do-not-cares3.2 常数case4.循环语句5. 过程块5.1 零延迟无限循环5.2 initial用于初始化6.过程块时序控制6.1 延时控制6.2 事件表达式6.3 wait语句6.4 赋值间(Intra-assignment)时序控制7.块(block)阅读《IEEE Standard for ...原创 2019-10-28 16:54:59 · 5295 阅读 · 0 评论 -
FPGA基础设计(9)Verilog数据类型和表达式
阅读《IEEE Standard for Verilog 2005》时,做一些整理和记录。目录1.数据类型2.变量(variable)3.数组4.表达式4.1 运算符除法 / 和求余 %幂运算 **数学运算时unsigned和sigend的问题关系运算符相等运算符位操作运算符缩位运算符移位运算符4.2 操作数4.3 位宽问题4.4 符号问题5.赋值1.数据类型Verilog HDL中数据类...原创 2019-10-18 19:19:43 · 6854 阅读 · 2 评论 -
FPGA基础设计(8)Verilog常数赋值、字符串、标识符
阅读《IEEE Standard for Verilog 2005》时,做一些整理和记录。1.整数赋值按照Verilog 2005的标准:0-9、a-f、z、x称作数字位(digit);表示数字正负的’+‘和’-‘视作一元操作符(unary operator);常说的二进制、八进制、十进制、十六进制称作数字的基(base);其在Verilog中的表示’b’、‘o’、‘d’、'h’称作基格式(...原创 2019-10-17 13:10:05 · 20477 阅读 · 4 评论 -
从2017.06.22开始
仅以此文纪念一个不会有人看的博客系列的开始~ 就在今天,博主还是一名成都信息工程大学 电子信息工程专业的大三学生,正在准备考研的路上~ 博主的大学生涯比不上一些大神忙碌不堪,但也有一些自己的学习心得和职业规划。 楼主从大一下半学期(2015年6月份)开始,由于一个雷达信号处理有关的项目,开始入了FPGA,从此不能自拔。从一开始苦学Verilog HDL,到接原创 2017-06-22 11:24:16 · 4802 阅读 · 31 评论 -
FPGA基础设计(一):VGA显示方法(文字、图形、波形)
概述 VGA是一种学习FPGA最常见的基础实验。虽然现在的显示屏大多已经采用DVI和HDMI方案,但其实VGA在另一个地方还有应用,那就是大屏的LCD。目前4.3寸以上的TFT基本都是VGA接口,这样在完成一个FPGA系统设计时,选择一个VGA接口的TFT用来显示便是最简单方便的方案。 现在2017年全国大学生电子设计大赛还有不到一个月,熟练的使用VGA显示各种图形、文字、波形还是很重要的,而不原创 2017-07-15 20:25:34 · 35176 阅读 · 24 评论 -
FPGA基础设计(二):PS2键盘控制及短按、长按
概述 PS2键盘也是一个经典的实验,可能很多人接触如何对通信协议、时序编程就是从这个实验开始学习的。USB键盘已经很普及,现在市场上还是有一些USB转PS2的转接头,还有一些转换芯片。这个实验虽然简单,不过不知道您有考虑过单按一次输出一个有效脉冲、短按、长按等这些是如何实现的么?这就涉及到一些时钟、边沿检测等设计问题。PS2协议实现 我们见到的PS2的接口电路应该都是这样的: 一根时钟线、一原创 2017-07-15 22:03:24 · 10244 阅读 · 2 评论 -
FPGA基础设计(三):UART串口通信
概述 串口通信也是一个基础实验,是FPGA与电脑、单片机、DSP通信的一种最简单的方案,对通信速率要求不高时可以选择UART通信。您可能已经知道UART时序的控制、波特率的配置等方面的内容,但在实际使用时还是会遇到一些问题,比如如何才能恰当的和其它模块进行衔接?为什么时序明明没问题,却无法和其它控制单元成功通信?本文致力于全面解析在设计UART通信时的思路方法。UART通信协议 UART通信的一原创 2017-07-16 14:02:35 · 20197 阅读 · 5 评论 -
FPGA基础设计(四):IIC协议实现
概述 很多数字传感器、数字控制的芯片(DDS、串行ADC、串行DAC)都是通过IIC总线来和控制器通信的。不过IIC协议仍然是一种慢速的通信方式,标准IIC速率为100kbit/s,快速模式速率为400kbit/s。本文致力于讲述如何用计数器控制和分频时钟控制两种方式完成IIC的读写操作。IIC协议 IIC协议是一种多机通讯,由SDA数据线和SCL时钟线构成串行总线,所有的IIC设备都可以挂载到原创 2017-07-17 16:13:53 · 5508 阅读 · 2 评论 -
Vivado使用技巧(1):使用Tcl在Shell中进行FPGA开发
概述 通常我们使用的是Vivado IDE进行FPGA的开发,IDE提供了图形化的界面和自动化管理方案,我们只需要点击几个按钮就会得到结果。有时候还会用到另外一种开发方式:在Vivado Tcl Shell中使用Tcl命令的方式控制开发设计流程。使用Tcl的好处是每一个命令都有一个具体的操作,我们可以详细的控制设计过程中的每一步,设计更加灵活,也更有效率。 通常的情况下都会根据需求事先编辑好原创 2017-07-18 14:54:46 · 20732 阅读 · 3 评论 -
Vivado使用技巧(2):封装自己设计的IP核
概述 Vivado在设计时可以感觉到一种趋势,它鼓励用IP核的方式进行设计。“IP Integrator”提供了原理图设计的方式,只需要在其中调用设计好的IP核连线。IP核一部分来自于Xilinx官方IP;一部分来自于第三方IP,其中有的是在网络上开源的;另一部分就是自己设计的IP。有时候我们需要把自己的一个设计反复用到以后的工程中,利用Vivado的“IP Package”将其封装起来,再以后的原创 2017-07-18 16:35:22 · 35193 阅读 · 6 评论 -
FPGA综合系统设计(一):1.2/50μs冲击电压测量与显示
FPGA数据采集-传输-显示系统(一)我将会以(1)基于FPGA的1.2/50μs冲击电压测量与显示;(2)基于FPGA的温度采集和以太网传输;这两个课题为基础详细介绍在系统原创 2017-06-27 23:59:33 · 6779 阅读 · 2 评论 -
FPGA综合系统设计(二):基于FPGA的温度采集和以太网传输
概述接着上一篇博文的主题,继续讨论FPGA数据采集-传输-显示系统的设计方法。本文以“基于FPGA的温度采集与以太网传输”这个课题为核心展开讨论系统设计的方法,一方面巩固上一篇介绍的设计思想,另一方面会看到一些新产生的问题。系统结构框图如下图所示。温度传感器如模拟式的PT100,FPGA可以用ADC模块来采集,这种对采集速率要求不高的应用就不需要用上一篇中那样的高速并行ADC,用普通的串行ADC采集原创 2017-06-30 11:53:52 · 9553 阅读 · 2 评论 -
FPGA综合系统设计(三):贪吃蛇游戏(键盘+VGA)
“FPGA综合系统设计”是博主新开的一个系列,主要讲述在设计一个完整的系统时采用的方法。博主计划在后面有时间的时候再开一个“FPGA基础设计”的系列,专门讲述FPGA设计一些单独模块的方法,如IIC协议、SPI协议、DDR读写等。 本文是综合系统设计的第一篇,选择的题材是“贪吃蛇游戏”,使用键盘上的WASD键控制小蛇运动,VGA显示屏显示游戏状况和游戏分数。环境与设备 Vivado 2017.1原创 2017-07-14 12:10:04 · 17621 阅读 · 12 评论 -
FPGA综合系统设计(四):串口控制的DDS信号发生器
传统DDS原理 DDS 全称 Direct Digital Synthesizer(直接数字合成),是从相位出发,直接采用数字技术产生波形的一种频率合成技术。基本模型如上图所示,主要由时钟频率源fclk、相位累加器、波形存储器、及后级数模转换器(DAC)、低通滤波器(LPF)组成。频率控制字M和相位控制字分别...原创 2018-05-26 10:22:00 · 7347 阅读 · 2 评论 -
Testbench编写指南(2)文件的读写操作
Testbench编写指南是博主新开的一个系列,主要介绍在编写testbench时使用到的技巧,让编写者的水平不再仅仅停留在时钟信号、复位信号等简单信号的设置上,更好的完成对设计的仿真工作。第一篇的题材是文件的读写控制,仿真时经常需要从文件中读取测试激励,还要将仿真结果存取在文件中供其它程序读取调用。读取txt文件数据示例代码如下:integer i; //数组坐标r...原创 2018-05-27 17:36:13 · 27396 阅读 · 5 评论 -
FPGA数字信号处理(六)直接型IIR滤波器Verilog设计
该篇是FPGA数字信号处理的第六篇,2-5篇介绍了DSP系统中极其常用的FIR滤波器。本文将简单介绍另一种数字滤波器——IIR滤波器的原理,详细介绍使用Verilog HDL设计直接型IIR滤波器的方法,下一篇会介绍如何用Verilog HDL设计级联型IIR滤波器。 数字滤波器数字滤波器从实现结构上划分,有FIR和IIR两种。FIR的特点是:线性相位、消耗资源多;IIR的特点是:非线...原创 2018-06-11 15:05:00 · 23731 阅读 · 13 评论 -
FPGA数字信号处理(七)级联型IIR滤波器Verilog设计
该篇是FPGA数字信号处理的第七篇,上一篇介绍了直接型IIR滤波器的原理,详细介绍使用Verilog HDL设计直接型IIR滤波器的方法。本文会介绍如何用Verilog HDL设计级联型IIR滤波器。级联型IIR计算速度快,占用资源少,比起直接型更为常用。 IIR滤波器将IIR滤波器系统函数的分子分母进行因式分解(分解为实数和复共轭对),再将每一对共轭因子合并为实数二阶因子: ...原创 2018-06-11 17:32:26 · 12682 阅读 · 1 评论 -
FPGA基础设计(五):并行ADC与DAC
概述ADC和DAC是FPGA与外部信号的接口,从数据接口类型的角度划分,有低速的串行接口和高速的并行接口。FPGA经常用来采集中高频信号,因此使用并行ADC和DAC居多。本文将介绍如何使用FPGA驱动并行ADC和并行DAC芯片。并行接口包括两种数字编码方式:带符号数signed与无符号数unsigned。本文还将介绍使用不同编码方式的ADC与DAC时需要注意的问题。接口协议以A...原创 2018-06-12 22:32:31 · 37178 阅读 · 14 评论 -
FPGA数字信号处理(一)数字混频(NCO与DDS的使用)
这是数字信号处理系列的第一篇,以简单的数字混频为例,介绍在FPGA程序设计中很重要的二进制原码、补码;有符号数、无符号数的问题。本文不是像课本那样介绍这些基础概念,而是介绍很实际的设计方法。借助于数字混频这个设计,本文还会介绍用途非常广泛的Altera公司Quartus中的NCO IP核、Xilinx公司Vivado中的DDS Compiler IP核的具体使用方法。混频原理混频就...原创 2018-05-30 16:27:36 · 60891 阅读 · 20 评论 -
FPGA数字信号处理(二)并行FIR滤波器Verilog设计
该篇是FPGA数字信号处理的第二篇,选题为DSP系统中极其常用的FIR滤波器。本文将简单介绍FIR滤波器的原理,详细介绍使用Verilog HDL设计并行FIR滤波器的流程和方法。接下来几篇会介绍串行结构FIR的Verilog设计、使用Quartus和Vivado的IP核设计FIR的方法。 数字滤波器数字滤波器从实现结构上划分,有FIR和IIR两种。FIR的特点是:线性相位、消耗资源多...原创 2018-06-06 14:38:50 · 32694 阅读 · 21 评论 -
FPGA数字信号处理(三)串行FIR滤波器Verilog设计
该篇是FPGA数字信号处理的第三篇,选题为DSP系统中极其常用的FIR滤波器。本文将在上一篇“FPGA数字信号处理(二)并行FIR滤波器Verilog设计” https://blog.csdn.net/fpgadesigner/article/details/80594627的基础上,继续介绍串行结构FIR滤波器的Verilog HDL设计方法。串行FIR并行FIR使用n/2(借助线性...原创 2018-06-06 18:07:16 · 17568 阅读 · 27 评论 -
FPGA数字信号处理(四)Quartus FIR IP核实现
该篇是FPGA数字信号处理的第四篇,选题为DSP系统中极其常用的FIR滤波器。本文将在前两篇的基础上,继续介绍在Quartus开发环境下使用Altera(或者叫Intel)提供的FIR IP核进行FIR滤波器的设计。1.“FPGA数字信号处理(二)并行FIR滤波器Verilog设计” https://blog.csdn.net/fpgadesigner/article/details/8059...原创 2018-06-07 10:47:08 · 27006 阅读 · 24 评论 -
FPGA数字信号处理(八)Quartus FFT IP核实现
本系列的2-7篇分别介绍了FIR和IIR滤波器的FPGA实现。除了数字滤波器外,快速傅里叶变换(FFT)也是DSP系统常用的运算单元,用于对信号进行频域分析。FFT算法的实现很复杂,但Altera和Xilinx都提供了可快速上手使用的IP核。本文将先介绍如何使用Quartus的FFT IP核进行频谱分析。IP核概述由于版本的关系,Quartus提供的IP核有两种,老版本集成在“Mega...原创 2018-06-14 11:22:07 · 36921 阅读 · 43 评论 -
FPGA数字信号处理(九)Vivado FFT IP核实现
该篇是FPGA数字信号处理的第9篇,选题为DSP系统中极其常用的FFT运算。上篇介绍了Quartus环境下FFT IP核的使用“FPGA数字信号处理(八)Quartus FFT IP核实现https://blog.csdn.net/fpgadesigner/article/details/80690345 ”。本文将介绍在Vivado开发环境下使用Xilinx提供的FFT IP核进行FFT运算的设...原创 2018-06-14 16:27:45 · 39642 阅读 · 50 评论 -
FPGA综合系统设计(五)频谱分析系统
概述FFT是许多数字信号处理算法中的基本运算单元,我们经常会用到FFT对采集到的信号做频谱分析。在这个设计实例中,我们使用并行ADC采集外部信号,经过FFT处理,将计算结果通过串口发送至PC。由于FFT处理速度与串口通信速度之间存在差异,中间还需要加入一个跨时钟域处理单元。这是一些完成本文设计的参考文章: 1.ADC采集设计参考“FPGA基础设计(五):并行ADC与DAC” https:...原创 2018-06-14 18:07:32 · 11266 阅读 · 11 评论 -
FPGA数字信号处理(五)Vivado FIR IP核实现
该篇是FPGA数字信号处理的第五篇,选题为DSP系统中极其常用的FIR滤波器。本文将在前三篇的基础上,继续介绍在Vivado开发环境下使用Xilinx提供的FIR IP核进行FIR滤波器的设计。1.“FPGA数字信号处理(二)并行FIR滤波器Verilog设计” https://blog.csdn.net/fpgadesigner/article/details/80594627 2.“F...原创 2018-06-08 12:04:59 · 31910 阅读 · 25 评论 -
FPGA数字信号处理(十四)Vivado Cordic IP核计算arctan
在数字信号处理系统中经常需要计算arctan函数,比如在解调系统中由DDC得到复基带信号q和i支路计算arctan(q/i)即可得到基带信号的相位。在FPGA设计中可以使用CORDIC算法来实现arctan。本文将介绍在Vivado开发环境下如何使用Xilinx提供的Cordic(6.0) IP核计算arctan。该IP核还可以实现其它CORDIC算法可实现的功能,将在后面的文章中介绍。...原创 2018-06-23 00:21:00 · 25047 阅读 · 3 评论 -
FPGA综合系统设计(七)基于DDC的两路信号相位差检测
概述本文记录一个简单的数字信号处理综合系统。在这个设计实例中,由DDS生成模拟中频信号与本振信号,使用DDC(Digital Down Converter,数字下变频)提取出同相分量i和正交分量q,计算两路信号之间的相位差,将测量结果通过串口发送至PC,使用Qt上位机做界面显示。这是一些完成本文设计的参考文章: 1. DDS IP核的使用参考FPGA数字信号处理(一)数字混频(NCO与...原创 2018-06-23 17:13:47 · 15673 阅读 · 11 评论 -
FPGA数字信号处理(十)ASK调制技术
本系列的1~9篇介绍了数字信号处理系统的基础概念以及FIR、IIR和FFT三种基本运算单元,从本文开始将介绍一些数字信号处理系统。本文将介绍数字通信系统中ASK调制技术的FPGA实现。调制技术在通信系统中,由于一般情况下信道不能直接传输基带信号,因此必须用基带信号对载波信号(通常是正弦波)的某些参量进行控制,使其随着基带信号的变化而变化,这个过程称作调制,得到的信号称作调制信号(已...原创 2018-06-15 22:46:53 · 22338 阅读 · 7 评论 -
FPGA数字信号处理(十一)ASK解调技术
上一篇介绍了数字通信系统中ASK调制技术的FPGA实现。调制信号经过DAC、可选的带通滤波器、功率放大器、天线发送出去后,在接收端收到ASK信号后需要对其解调,提取出包含的信息(基带信号)。无论在哪种调制解调系统中,解调总比调制要复杂很多,本文开始将介绍ASK解调系统的实现。ASK解调ASK信号的解调有包络检波法(非相干解调)和同步检测法(相干解调)两种方法。同步检测法系统框图如下...原创 2018-06-17 14:12:13 · 24907 阅读 · 9 评论 -
FPGA数字信号处理(十二)滑动平均滤波器
上一篇介绍了数字通信系统中ASK解调技术的FPGA实现。在ASK解调系统中,需要对低通滤波器提取出的基带包络信号做判决输出,本文将介绍其中涉及到的判决门限问题,以及在FPGA中的实现方法。判决门限由上一篇可知,LPF输出的基带包络信号包含有直流分量。2ASK信号只有2种电平状态,因此只需要将基带波形的直流分量作为判决门限即可。4ASK信号有4种电平状态:最大幅度的0、1/3、2/3...原创 2018-06-17 17:23:24 · 17554 阅读 · 4 评论 -
FPGA综合系统设计(六)脉冲参数测量仪
概述这篇博文记录一下博主在两年前大二时做过的一个小东西。在这个设计实例中,使用并行ADC采集脉冲信号,测量其频率、占空比、幅度、上升沿和下降沿时间,将测量结果通过串口发送至MSP430单片机,使用TFT做界面显示。另外FPGA还可以输出一路10%占空比的标准1MHz脉冲信号。这是一些完成本文设计的参考文章: 1. ADC采集设计参考“FPGA基础设计(五):并行ADC与DAC” htt...原创 2018-06-18 14:11:49 · 7058 阅读 · 6 评论 -
Testbench编写指南(3)模块化工程的仿真方法
第二篇的题材是模块化工程的仿真设计方法。现在只要是功能比较完善、规模比较大的FPGA设计都会采用模块化设计的方法。本文介绍在模块化设计过程中编写testbench并仿真的方法,Vivado对此有很好的特性支持,使用Quartus+ModelSim也可以达到同样的效果。仿真第1个子模块在开始设计前,根据设计划分好各功能模块(为了叙述方便,这里以对“FPGA数字信号处理(十三)锁相环位...原创 2018-06-26 15:34:09 · 11082 阅读 · 1 评论 -
FPGA数字信号处理(十五)多速率FIR滤波器
该篇是FPGA数字信号处理的第15篇,选题为多速率信号处理系统中用到的多速率FIR滤波器。本文将简单介绍多速率信号处理系统的基本概念,以及使用Quartus和Vivado的IP核设计多速率FIR滤波器的方法。多速率信号处理这个概念是相对于单速率(Single Rate)信号处理而言的。单速率是指整个信号处理流程中只有一种数据速率;多速率是指系统中存在多个数据速率。使用多速率信号处理...原创 2018-07-01 16:37:58 · 15373 阅读 · 4 评论 -
学会System Generator(9)MCode调用MATLAB代码
本文是该系列的第9篇。FPGA设计中经常用到一些控制逻辑,如有限状态机(FSM),如果用各种block搭建一个FSM比较麻烦。System Generator支持调用MATLAB代码,通常可以编写MATLAB代码来实现FSM等控制逻辑,通过MCode block调用到System Generator设计中。本文将使用MATLAB代码设计一个FSM,对“1011”这个序列进行检测。序列检测应该是...原创 2018-07-08 14:54:28 · 3972 阅读 · 0 评论 -
学会System Generator(10)支持的MATLAB语法
本文是该系列的第10篇,上一篇介绍了在System Generator设计中使用MCode模块调用MATLAB代码来完成逻辑控制。本文将介绍System Generator支持的所有MATLAB语法。限于篇幅,本文只记录了经常用到或相对重要的内容,更详细的信息可以参考xilinx官方文档ug958->第一章->MCode小节。MCode block特性MCode用于在S...原创 2018-07-08 22:07:16 · 3728 阅读 · 0 评论 -
FPGA数字信号处理(十六)单级CIC滤波器Verilog设计
该篇是FPGA数字信号处理的第16篇,选题为多速率信号处理系统中常用的CIC滤波器。本文将详细介绍使用Verilog HDL设计单级CIC滤波器的方法。接下来几篇会介绍多级CIC滤波器的Verilog设计、使用Quartus和Vivado的IP核设计CIC的方法。多速率信号处理的相关知识可以参考:“FPGA数字信号处理(十五)多速率FIR滤波器:https://blog.csdn.net/FP...原创 2018-07-02 10:48:17 · 12808 阅读 · 5 评论 -
FPGA数字信号处理(十七)多级CIC滤波器Verilog设计
该篇是FPGA数字信号处理的第17篇,题接上篇,本文详细介绍多级CIC滤波器的特性、使用Verilog HDL设计多级CIC滤波器的方法。接下来两篇会介绍使用Quartus和Vivado的IP核设计CIC的方法。 多级CIC滤波器根据上一篇可知,单级CIC滤波器的第一旁瓣电平衰减固定为13.46dB,且与滤波器的阶数无关。这个值不满足通常的阻带衰减要求,解决方法就是通过级联CIC滤...原创 2018-07-02 15:47:40 · 21247 阅读 · 22 评论 -
FPGA数字信号处理(十八)Quartus CIC IP核实现
该篇是FPGA数字信号处理的第18篇,题接上篇,本文详细介绍使用Quartus自带的CIC IP核进行设计的方法。下一篇会介绍使用Vivado的IP核设计CIC的方法。IP核概述由于版本的关系,Quartus提供的IP核有两种,一种是集成在“MegaWizard Plug-In Manager”中;一种集成在“IP Catalog”和qsys中。两种Quartus版本下的IP核,从...原创 2018-07-02 17:20:32 · 6531 阅读 · 4 评论