
FPGA
文章平均质量分 68
分享学习FPGA的心得
梅菜扣肉鱼丸粗面
这个作者很懒,什么都没留下…
展开
-
vivado进行IP核移植(复制)
要想在一个工程中设置好的IP核移植到另一个工程中,只需要将xci文件添加即可。步骤如下:1、add source2、add file注意第一个不能勾选,不然会和第二个冲突。3、选择文件对应IP核的xci文件即可。...原创 2021-12-16 21:06:01 · 13804 阅读 · 2 评论 -
时钟门控技术-clock gating
目录1、时钟门控技术简介2、门控单元结构图3、时钟门控的生成 1、时钟门控技术简介降低动态功耗的主要技术手段之一是时钟门控技术,clock gating技术,是指在电路中插入时钟门控单元,在电路不需要工作的时候控制时钟关闭,降低所有不工作电路的翻转次数,降低动态功耗。2、门控单元结构图3、时钟门控的生成时钟门控单元时由综合工具自动生成的,能根据RTL代码风格自动生成,但需要按固定的写法才能生成门控单元...原创 2021-10-06 19:16:27 · 4624 阅读 · 1 评论 -
浅谈低功耗设计
目录一、低功耗设计简介二、功耗的组成三、各抽象层次降低功耗四、常见的低功耗技术1、power gating 电源门控技术2、多电压供电技术3、多阈值电压技术4、clock gating 门控时钟技术5、DVFS 动态电压频率调整技术6、寄存器传输级降低功耗技术一、低功耗设计简介芯片功耗的问题最近几年得到了越来越多的重视,主要来源于以下几个方面: 1、90nm以下,随着设计流程的发展,芯片的集成度达到了上千万门级。一颗最顶级的芯片总功耗可以达到惊...原创 2021-05-09 16:47:27 · 4855 阅读 · 1 评论 -
序列检测的两种实现方式:状态机与移位寄存器
背景序列检查是笔试中常考的编程题 ,如果笔试中没有的话,同一家公司的面试中大概率会在手撕代码环节进行考察,总的来说,序列检测是一个不太困难却又非常重要、易考的知识点。比较常用的序列检测实现方式是状态机,逻辑清晰,写起来方便。但也见过面试官会问知不知道其他的实现方式,这时他要考察的点其实就是移位寄存器的方式实现,下面将分别介绍两种方式的实现。我们将以1101的检测为例。状态机方式实现...原创 2021-05-06 21:55:32 · 1823 阅读 · 3 评论 -
分频电路的实现:奇数分频、偶数分频和小数分频
偶数分频偶数分频是最简单的,N分频需要计数到(N-1),并在(N/2 - 1)和(N - 1)处更改输出的取值即可,只需要单一时钟沿计数。下面是四分频电路的实现:代码:奇数分频原创 2021-04-13 18:03:39 · 5717 阅读 · 1 评论 -
FPGA/数字IC之有限状态机:简介及其编码方式:顺序码、独热码与格雷码比较
一、状态机的分类标准状态机分为摩尔(Moore)状态机与米勒(Mealy)状态机。摩尔状态机的输出只与当前状态有关,且只在时钟边沿到来时发生变化。米勒状态机的输出不但与当前的状态有关,还和当前的输入有关,这一特点使其控制和输出更加灵活,但增加了设计的复杂性。两种状态机的示意图如下:二、状态机的优点与存在的问题优点:状态机的优点显而易见,结构分明、易读易懂易排错,逻辑清晰。缺点:两个状态转换时,容易出现过渡状态;运行过程中,可能进入非法状态;在一种器件上稳定工作,移植到另一种器原创 2021-02-23 10:37:38 · 3940 阅读 · 0 评论 -
ZYNQ学习之路(三):自定义IP实现PL处理PS写入BRAM的数据
ZYNQ系列嵌入式FPGA可以使PS将数据写入PL部分BRAM,PL可以将数据读取后再重新写入BRAM,PS将数据读出后再传走,这样可以使PL部分专心处理数据,不用考虑相对缓慢的数据接收与发送部分,并且可以实现数据的缓存。实验目的:通过自定义IP核,将PS写入BRAM的数据加一后重新写入BRAM,再与第一次写入的数据比较。首先创建IP核:Tools->Creat and Package New IP,选择创建AXI4 Peripheral:在 Name 一栏的名称改为“ pl_bram原创 2021-01-24 17:06:51 · 4243 阅读 · 7 评论 -
常用串行总线(一):UART及FPGA实现
目录一、uart及RS232协议介绍二、实验设计三、代码分模块展示rx部分tx部分四、效果展示一、uart及RS232协议介绍通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。通俗的讲就是把多比特的数据转化为单比特的数据,或者把单比特的数据转化为多比特的数据。..原创 2020-12-23 19:39:21 · 1382 阅读 · 0 评论 -
数字电路中的竞争与冒险
目录一、竞争与冒险的概念1、竞争2、冒险二、冒险的分类静态冒险与动态冒险逻辑冒险和功能冒险三、判断静态冒险代数法卡诺图法四、冒险的消除1、脉冲封锁2、 引入滤波电容3、增加冗余项4、将组合电路改为时序电路五、写在最后六、参考文献一、竞争与冒险的概念竞争与冒险树数字电路中常见的现象,是逻辑门因输入端的竞争而导致输出产生不应有的尖峰干扰脉冲(又称过渡干扰脉冲)的现象。1、竞争当一个逻辑门的两个输入端的信号同时向相反方向变化时,...原创 2020-11-30 22:06:03 · 12899 阅读 · 0 评论 -
一、基于ZYNQ的HLS矩阵乘法加速实验(二)
继续上篇:首先将生成好的IP添加到IP库中,方法如下,第三步选择刚刚导出的路径,会自动识别出IP核。接下来创建Block Design,先添加ZYNQ处理器,选择合适的DDR芯片型号和UART,然后将新添加的IP核加进BD中,点击自动连接,最终生成的框图如下:留意一下寄存器的地址:接下来就是传统的流程:生成output和顶层文件,综合实现布局布线,导出到Hardware,Launch SDK。在SDK中创建一个新的Application,创建空文件或者HelloWord文件,我.原创 2020-10-16 21:29:44 · 2179 阅读 · 0 评论 -
一、基于ZYNQ的HLS矩阵乘法加速实验(一)
HLS创建矩阵乘法加速器目录HLS创建矩阵乘法加速器一、实验目的二、HLS设计三、打包IP一、实验目的通过HLS自动生成一个对两个4*4的矩阵进行乘法的电路,然后通过HLS进行优化,打包AXI接口并创建IP,最后在vivado中调用,在SDK中进行正确性检验。本篇我们只介绍HLS如何加速并打包生成IP,与vivado的联合测试将在下一篇介绍。二、HLS设计首先创建一个工程,我的工程名叫matrix,然后在source中添加两个文件,一个是.cpp文件,用来进行函数的定义,原创 2020-10-16 13:25:08 · 4564 阅读 · 3 评论 -
Verilog中的 full case 与 parallel case
在使用Verilog时,case语句时非常常见的,case语句中有些非常有意思的东西,full case 与 parallel case,在这里我想写一下一些关于它们的相关知识。一、full case在使用case时,我们一般要求在没有罗列所有情况时,要将default添加进去,以防止出现latch,但是有时候我们就会非常容易漏掉default,比如我们表示红绿灯时,三种情况需要两位,我们用00、01、10分别代表红绿蓝,这时我们已经将所有情况罗列清楚,但却没有用到11,就会很容易将其忘掉,就会..原创 2020-09-25 22:08:13 · 6118 阅读 · 4 评论 -
ZYNQ学习之路(一):LWIP数据传输与数据处理(一)(PS处理)
LwIP是Light Weight (轻型)IP协议,有无操作系统的支持都可以运行。LwIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用,它只需十几KB的RAM和40K左右的ROM就可以运行,这使LwIP协议栈适合在低端的嵌入式系统中使用。关于以太网的相关信息这里不做详细介绍,我只介绍如何通过ZYNQ实现数据的环路测试。实验目的是通过在SDK修改代码,实现将数据+1后返回的操作。具体步骤:一、VIVADO部分配置:创建处理器并设置我的这里串口选的UART1的48和49。.原创 2020-09-11 18:34:38 · 6217 阅读 · 5 评论 -
FPGA异步信号寄存器打拍
寄存器打拍对于异步信号的处理,一般要进行寄存器打拍以防止亚稳态的产生。通常可以打一拍、两拍或者三拍。打一拍就是指将信号延时一个时钟周期,打n拍就是延迟n个时钟周期。当同一个时钟域的信号由于各种延时导致不能满足时序要求时,可以进行打一拍的操作。异步信号也可以进行打一拍的操作,关于打一拍的具体规则如下:1.全局时钟的跳变沿最可靠。2.来自异步时钟域的输入需要寄存一次以同步化,再寄存一次以减少亚稳态带来的影响。3.不需要用到跳变沿的来自同一时钟域的输入,没有必要对信号进行寄存。4.需要用到跳变沿原创 2020-08-06 10:38:20 · 5831 阅读 · 1 评论 -
异步简单双口RAM的实现
RAM的分类RAM,随机存取存储器,有单口和双口之分,单口RAM只有一个数据线和地址线,不能同时进行读取操作,双口RAM有读和写两个地址线和数据线。因此双口RAM使用要比单口RAM广泛。双口RAM有真双口和简单双口之分,真双口有两个读端口和两个写端口,简单双口只有一个读端口和一个写端口,一般读写要求不高时,简单双口RAM就能满足我们的需求。另外根据时钟的不同,RAM还有同步异步之分,同步RAM是指读写采用同一个时钟,异步RAM是指读写的时钟不同。异步简单双口RAM的实现实现的双口RAM的功能原创 2020-08-05 16:59:36 · 4228 阅读 · 1 评论 -
FPGA之按键消抖
按键消抖通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。消抖原理抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。在开始的抖动时间内,按键会不断地断开闭合,这就会导致电路认为我们在不断的按下按键,对实验造成很大的影响。消抖的常用方法为延时消抖。延时消抖是指在按下按键5-10ms后,等按键不再抖动后进原创 2020-08-02 18:39:02 · 1282 阅读 · 0 评论 -
Verilog常用语法总结
作为常用的硬件描述语言之一,Verilog的语法非常丰富,但常用的语法却并不多,下面我们来介绍一下比较常用的语法。原创 2020-07-19 16:22:42 · 4013 阅读 · 0 评论