
FPGA设计开发
隔壁老余
笃志穷理
展开
-
序列信号发生器的三种实现方式
一、状态转移型的序列信号产生器的verilog HDL 设计用一个不断循环的状态机,循环产生序列信号001011。过程过于简单,我就不画状态图了。直接给出verilog HDL设计代码://有限状态机方式实现001011序列信号产生器 module sequence_signal_fsm(clk, rst_n, dout); ...转载 2020-09-04 21:48:31 · 9382 阅读 · 0 评论 -
整数(奇偶)+分数分频器的verilog实现(大合集)
异步FIFO设计分频器实现一、50%占空比整数分频1.1 奇数分频器1.1.1 方法1:2N分频上下沿波形相异或1.1.2 方法2:N分频上下沿波形相或(输出初始态为0)1.2 偶数分频器二、非50%占空比分频三、小数(分数)分频3.1 N+0.5分频3.2 任意小数分频3.2.1 基于脉冲删除小数分频的算法描述3.2.2 脉冲删除小数分频的仿真分频器实现分频在数字设计中应用广泛,通常可以使用锁相环PLL和计数器实现。本文介绍的分频器是基于计数器实现的,由于使用的是DFF(D触发器),这实际上是行波计数原创 2020-07-31 12:24:44 · 5715 阅读 · 1 评论 -
从vivado(Xilinx)谈约束文件
对于一个完整的FPGA设计,既要有时序约束,也要有物理约束(例如:管脚分配与管脚电平设置)。Xilinx建议将这两类约束分开写在不同的约束文件中。此外,考虑到某些设计中可能会用到手工布局,从而会有相应的Floorplan约束(对应Pblock,可理解为面积约束)。同时,在大多数情形下都需要对FPGA设计进行调试,这样就会用到ILA,同时需要对相应的net设置MARK_DEBUG属性,这可理解为第三种约束即调试约束。因此一个完备的约束会包含时序约束、物理约束和调试约束,如下图所示。对于约束文件,Vivado转载 2020-07-21 09:36:41 · 5858 阅读 · 2 评论 -
可综合的异步fifo设计(二)
本篇是继可综合的async_fifo设计(一)的下半篇,给出了testbench代码、测试波形及几个注意事项。异步FIFO设计三、重难点四、仿真波形4.1 读写不同时进行的逻辑测试4.1.1 FIFO初始化功能验证4.1.2 FIFO空标志产生逻辑的验证4.1.4 FIFO写满保护功能的验证4.1.5 FIFO读空保护(不再读)功能的验证4.2 读写同时进行的逻辑测试4.2.1 写信号不做间隔控制4.2.2 写信号做间隔控制4.3 testbench代码三、重难点整个设计前后,提出以下几个问题://原创 2020-07-14 23:12:13 · 1302 阅读 · 2 评论 -
可综合的异步fifo设计(一)
异步FIFO设计一、基本概念二、设计思路2.1 设计前准备工作2.1.1 系统框图2.1.2 格雷码基础2.1.3 异步fifo工作流程举例2.2 RTL建模2.2.1 DPRAM建模2.2.2 WR_LOGIC建模2.2.3 RD_LOGIC建模2.2.4 PIPE模块建模2.2.5 格雷码处理模块建模一、基本概念1.异步fifo定义:跨读写时钟域的dpram(双口ram),fifo的读写时钟是相互独立的两个时钟,在各自时钟下实现fifo数据的读写功能。2.异步fifo用途:【1】跨时钟域的多bi原创 2020-07-14 11:01:54 · 3469 阅读 · 0 评论 -
Pid算法在闭环dc-dc中的应用
时间:2019.10.25至此,已经初步完成闭环pid算法应用的仿真。以下对本次工作作关键性笔记记录。PART1:项目简述第一, 项目内容与试验目的。项目内容:搭建硬件BUCK平台(开环,平台上包括栅极驱动电路),使用fpga完成数据采集和数据处理,设计一个fpga数控电源。本次设计,采用的adc型号为ad9200。试验目的:1】 在fpga开发平台上成功运行pid算法;2】 熟悉数...原创 2019-10-25 21:27:03 · 4243 阅读 · 2 评论 -
数字设计中的小数处理——在加法与乘法运算中
先提两个问题:【1】 数字设计中小数的处理【2】 加法器、乘法器中输出数据的位宽问题1、有符号数和无符号数的定义,最高位表示符号位,其他位为数据位。无符号数则没有符号位;2、有符号数和无符号数转化为10进制表示的时候唯一的区别就是最高位的权重不同,这里的负数的表示与3中的表示不相同,这里的每一个位都具有权值,只不过最高位(即符号位)也是参与到权值贡献中,且其表示的为负值;举例:如4bit...原创 2019-10-16 10:09:21 · 2043 阅读 · 1 评论 -
黑金高速AD-DA模块使用
这个月是假期的第一个月,从10号开始就在忙碌比赛的事情,总是没有时间更新博客。前不久使用了黑金的高速AD-DA模块,本文介绍一下。模块外形图如下,市面上很常见。整体评价一下板子做工。做工上整体比较美观,不足之处有二,其一是输入输出接口值留了BNC接口,这在实际应用时可能带来不便(可以使用高频头接口外加测试口的方式进行改进);其二是电源电路的电容的型号,如图所示,实物中的电容高度较高,实际使用...原创 2019-07-28 22:21:19 · 4172 阅读 · 1 评论 -
很多人觉得FPGA难学,因为他们没总结出数电的尽头是模电!
问:本人零基础,想学FPGA,求有经验的人说说,我应该从哪入手,应该看什么教程,应该用什么学习板和开发板,看什么书等,希望有经验的好心人能够给我一些引导。如果想速成,那就上网看视频吧,这样主要是面对应用的,一个小时内让你的板子运行起来。早期起来的快,活学活用,就是后期没有系统理论支持,会有些吃力,特别是大项目,那完全是个悲剧。国内做的可以的,我知道的就是周立功了,艾米电子也可以吧。这两家都有学...转载 2019-06-29 22:45:12 · 8130 阅读 · 3 评论 -
FPGA控制DDS_AD9850输出正弦波(“并行spi”)
本次介绍ADI公司的数字频率合成(DDS)芯片——AD9850以及如何使用FPGA控制其输出正弦波。本文分三个部分讲解:一是AD9850芯片介绍,包括基本引脚功能、驱动时序以及相关注意事项;二是基于FPGA的AD9850的驱动的建模;三是仿真和调试结果。PART1:AD9850认知1、模式选择:并行和串行两种。2、通信协议:实际上属于SPI协议的变种。串行时很好理解,并行时可...原创 2019-07-09 21:38:08 · 6759 阅读 · 5 评论 -
IIc通信协议之(二)——PCF8591控制
本章继上节iic通信协议,在理论学习之后,找到一块iic接口的片子——PCF8591,它是一款AD-DA集成芯片。所以本节对iic通信协议不做过多的介绍,重心放在iic的rtl建模,本次通过iic控制PCF8591实现DAC输出功能。PART1:建模前的准备包括两部分,一是芯片手册阅读,二是建模思路;一、阅读PCF8591芯片手册,获得以下信息:>PCF8591的...原创 2019-06-28 21:08:53 · 5336 阅读 · 2 评论 -
FPGA之串口收发字符串之(四)——串口屏USART_HMI介绍
之前对串口各模块的设计都做了相关介绍。这里介绍串口屏的相关知识。本次项目使用的串口屏型号是陶晶驰串口屏TJC3224T024_011,这个型号的串口屏的资料在官网可以找到。本文抛转引玉,简单介绍以便在本工程中更好的应用。下图是该串口屏的实物图:一般地,使用单片机或者嵌入式MCU控制串口屏,都会用到串口,同样地,在FPGA中实现也是类似,不过稍微复杂,具体代码设计过程中有以下问题需要...原创 2019-06-27 16:50:57 · 6530 阅读 · 2 评论 -
FPGA之串口收发字符串控制HMI串口屏之(一)——发送模块
1、总体概述串口通信是一种常见的通信方式。在FPGA中也是比不可少,本专题实现FPGA的串口收发字符串,属于Uart通信,通信方式:串行、异步、全双工的。用verilog实现,包括以下几个模块:串口发送模块、串口接收模块、波特率发生器模块、字符串接收与发送调度模块(可以独立于串口接收模块,这里的输入数据位并行的,主要是为了将要待发送字符串(来自其他模块)进行数据重组(本次的通信外部设备为HMI,...原创 2019-05-02 16:28:50 · 4884 阅读 · 0 评论 -
杂文:个人自述——电子之旅
发布了三篇博文之后,特此写一篇博文正式记录我的博客之旅。实际上,我很早就开始接触了优快云,很早之前也发布了第一篇优快云博文(开关电源自举电路那篇,后来见的是删除了第一篇,改了图片方向后从新上传的),但是后来就没有更新了。首先谈谈我的大学及大学所学。我是2014级成都信息工程大学的一名电子信息工程专业的学生。上了大学后,第一次接触电子是2014年11月左右,后来真正踏入电子之旅大概是在201...原创 2019-04-29 13:51:00 · 687 阅读 · 4 评论 -
FPGA之串口收发字符串控制HMI串口屏之(二)——接收模块
今天,对之前写好的UART程序进行了进一步优化,解决了历史遗留问题。先回顾一下,上一节写到的发送模块,这里作特别说明:本次串口模块主要是用于控制HMI屏幕的(之前也有提到),因为是特定的目标对象,所以也就要具体问题具体对待。比如:之前的串口发送模块的写法与常规的写法有所不同,主要就是:一般地,可以将串口的应用分为两种,一者是接收模块和发送模块一起使用,构成回环的形式(比如FPGA的实验课中,板...原创 2019-05-06 21:11:14 · 1924 阅读 · 0 评论 -
FPGA之串口收发字符串控制HMI串口屏之(三)——调控模块及波特率发生模块
本次将探讨串口收发字符串的最后一部分,所谓调控,不过是我取得一个名字罢了。因为FPGA要通过串口发送数据给HMI,而我们的数据并不是人为自定义随意发送,我们最终的目的是将整个系统(如电机伺服控制系统)中的某些参数(来自系统的其他模块的数据)传递给串口模块,由串口模块进行数据整合(整合成特殊格式,HMI的指令格式所要求的),然后再发送至HMI进行数据的显示,谓之调控。调控模块也是整个串口模块中最...原创 2019-05-07 21:34:36 · 2238 阅读 · 3 评论 -
FPGA控制——基于FSM的TLC5615之SPI建模
真的是好久不见!此篇博客介绍TLC5615的控制之SPI建模。PART1:TLC5615及其时序控制原理介绍TLC5615是TI公司的一款10位DAC芯片,控制兼容SPI接口。其引脚图如下:从引脚图看到,通信接口为:DIN、SCLK、CS_N和DOUT,其中DOUT用于级联方式,本次设计采用的是非级联方式,故不用到DOUT;模拟接口:OUT(模拟电压输出)、REF(基准电压输入...原创 2019-06-12 19:18:24 · 1527 阅读 · 0 评论 -
Ip核调用——FIFO学习(一)
FIFO-first in first out,正面意思很好理解。这部分着重介绍同步FIFO,之后再介绍异步FIFO。通过fifo的学习,同时为大家介绍quartus ii 中的ip核的调用。具体步骤如下:在MegaWizard Plug-in Manager中搜索fifo,即可进入fifo的io核编辑界面。编辑界面如下:选择8bit数据位宽,fifo深度32字节(红色标注1、2...原创 2019-06-19 15:45:46 · 7384 阅读 · 1 评论 -
异步FIFO(一)
写fifo这篇博客的主要原因是想强调异步fifo在跨时钟域处理以及读写数据宽度不同的异步fifo的设计。本篇文章先从简单开始,即先讨论ip调用——异步fifo使用。异步fifo,顾名思义与同步fifo最大的区别是在时钟上,异步fifo的读写是中国不同。本次设计,通过调用quartus ii自带的ip核(具体的ip调用生成在上篇文章已有说明,不会的可以回顾一下)。写时钟采用系统主时钟,运用...原创 2019-06-21 22:41:47 · 3111 阅读 · 0 评论 -
IIc通信协议(一)
-->物理结构:-->通信原理:通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。-->iic总线协议:1】起始和结束信号总是由主设备产生。起始信号:SCL高电平空闲,SDA由高变低;(SDA拉低后SCL再拉低)结束信号:SCL高电平空闲...原创 2019-06-26 22:35:24 · 14221 阅读 · 2 评论 -
更正传统思维:FPGA编程之verilog按键消抖
1、如下声明:a、按键状态:默认态低电平,按键按下为高电平b、本文假设抖动时间恰好为20ms!2、都知道按键按下存在抖动,且一般说要延时20ms,那么具体的,如何用软件在FPGA中实现呢?答:PART1:关键代码/******************按键消抖**********************///时序电路,按键按下状态always @ (posedge C...原创 2019-04-26 23:12:03 · 1154 阅读 · 1 评论