
Verilog
风中少年01
FPGA开发/ASIC爱好者
展开
-
数字电路基础:时序电路设计基础
学习《搭建你的数字积木数字系统与VerilogHDL设计入门教程》-汤勇明等之部分基础内容这一部分内容还是比较基础的,但是也是很重要的内容,这是深入学习FPGA的开始吧,我时钟相信理解到什么程度就会设计出什么程度的作品,所以基础很重要。学习内容:触发器和寄存器; 移位寄存器; 计数器; 时序逻辑设计实例; 总结与组合逻辑电路不同不同,时序逻辑的输出不仅与当前的输入有关,还与过...原创 2019-11-25 11:18:42 · 1666 阅读 · 1 评论 -
数电基础:时序逻辑电路
虽然每个数字电路系统可能包含有组合电路,但是在实际应用中绝大多数的系统还包括存储元件,我们将这样的系统描述为时序电路。 时序电路是由最基本的逻辑门电路加上反馈逻辑回路(输出到输入)或器件组合而成的电路,与组合电路最本质的区别在于时序电路具有记忆功能。1. 简介 时序逻辑电路是数字逻辑电路的重要组成部分,时序逻辑电路又称时序电路,主...转载 2019-08-19 08:52:21 · 38356 阅读 · 0 评论 -
Verilog设计(一):时钟门控
时钟门控(Clock-Gating)一直以来都是降低微处理器功耗的重要手段,主要针对寄存器翻转带来的动态功耗。时钟门控的设计 如何更加有效地设计时钟门控对于最大限度地降低功耗,同时保证处理器的性能至关重要。多核多线程微处理器中,多个功能部件可能不是同时工作的,对于无执行任务的功能部件就可以将其时钟关闭,减少其随时钟翻转进行多余的内部寄存器翻转,从而降低产生功耗的浪费和热量聚集。对...转载 2019-07-11 11:32:51 · 14026 阅读 · 0 评论 -
Verilog语法:`Include以及条件编译`ifdef- `else- `endif
include和define都是预处理命令,用于常量阐述的定义。//---------------------------------------`include file1.v//--------------`define X = 1 ;`define Y `ifdef Y Z = 1 ;`else Z = 0 ;`endif有时候我们会定义一些公...原创 2019-07-11 11:05:30 · 7120 阅读 · 0 评论 -
Verilog设计流程:综合(一)
参考《Verilog综合的教程》目录1. 介绍1.1 什么是综合?1.2 不可综合1.3在设计流程中的位置?2. 映射机制 Part1 -从VerilogHDL的类型和常量到硬件的映射1. 逻辑值体系1.1 位宽1.2. 值保持器建模 主要介绍4个部分:(1)从VerilogH...原创 2019-11-25 11:16:30 · 13875 阅读 · 0 评论 -
FPGA的应用领域
目录1. 视频图像处理领域1.1 视频编解码1.2 目标识别1.3 图像处理支持资源2. 通信领域2.1 有线通信2.2 无线通信2.3 通信领域支持资源3.数字信号处理领域3.1 数字处理系统模型3.2DSP 实现方式通用处理器ASIC 硬件专用的数字信号处理器(DSP处理器)专用的 FPGA硬件3.3 FPG...转载 2019-06-17 21:27:02 · 22740 阅读 · 0 评论 -
FPGA在AI时代的角色
目录掌握Verilog FPGA设计和验证方法是AI时代系统设计师的生命线1.前言2.对FPGA产品的需求硬件性能的提升软件工具的提升生态系统3. 对FPGA工程师的需求理解新任务掌握新工具抓住新机遇4.FPGA工程师要这样拥抱AI5. FPGA工程师的核心竞争力只有FPGA工程师能做到的掌握Verilog FPGA设计和验证方法是AI时...转载 2019-06-17 19:47:59 · 3868 阅读 · 0 评论 -
FIFO(二):FIFO工作原理
FIFO工作原理 根据FIFO工作的时钟域分为同步/异步FIFO。同步FIFO是指读时钟和写时钟为同一个时钟在时钟沿来临时同时发生读写。异步FIFO读写时钟不一致,读写相互独立。1.读写指针的工作原理读指针:总是指向下一个将要读取的单元,复位时指向第一个单元(编号为0);写指针:总...原创 2019-06-04 11:06:16 · 59878 阅读 · 6 评论 -
Verilog测试:TestBench结构
目录1. 完整的TESTBENCH文件结构2.时钟激励产生3.复位信号设计4.双向信号设计5. 特殊信号设计6.仿真控制语句以及系统任务描述7.加法器的仿真测试文件编写 Verilog功能模块HDL设计完成后,并不代表设计工作的结束,还需要对设计进行进一步的仿真验证。掌握验证的方法,即如何调试自己的程序非常重要。在RTL逻辑设计中,要学会根据硬件逻辑来写测试程...转载 2019-07-18 09:18:55 · 63451 阅读 · 12 评论 -
FPGA 设计的四种常用思想与技巧(三)--数据接口的同步方法
数据接口的同步方法数据接口的同步是 FPGA/CPLD 设计的一个常见问题,也是一个重点和难点,很多设计不稳定都是源于数据接口的同步有问题。 在电路图设计阶段,一些工程师手工加入 BUFT 或者非门调整数据延迟,从而保证本级模块的时钟对上级模块数据的建立、保持时间要求。还有一些工程师为了有稳定的采样,生成了很多相差 90 度的时钟信号,时而用正沿打一下数据,时而用负沿打一下数...转载 2019-08-04 17:40:31 · 2397 阅读 · 0 评论 -
数电基础:触发器&寄存器
1、锁存器(latch) 是电平触发单元,数据存储的动作取决于输入时钟(或使能)信号的电平值,仅当锁存器处于使能状态时,输出才会随着数据的输入发生变化。 简单说:两输入信号为使能信号EN,数据输入信号DATA_IN,以及一个输出信号Q,它的功能就是在EN有效的时候把输入数据DATA_IN的值传给Q,EN无效的时候就保持原有输出状态,直到EN再次有效,这就是锁存过程。也称透明...原创 2019-08-18 21:26:14 · 10344 阅读 · 1 评论 -
Verilog设计:频率检测模块
频率计频率计又称频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器。基准时钟:通常就是FPGA板上的晶振,一般FPGA开发板会提供一个50Mhz的晶振作为时钟源。计数法计数法:直接计数单位时间内被测信号的脉冲数量;这种方法测量精度高、速度快,适合不同频率、不同精度的测频需要。适合不同频率指的是一般的频率计在测高频信号和低频信号时的误差不一致,而采用计数法就能很...原创 2019-11-19 11:03:23 · 13071 阅读 · 0 评论 -
数字电路基础:如何提高电路工作频率
如何提高电路工作频率对于设计者来说,我们当然希望我们设计的电路的工作频率(在这里如无特别说明,工作频率指FPGA片内的工作频率)尽量高。我们也经常听说用资源换速度,用流水的方式可以提高工作频率,这确实是一个很重要的方法,今天我想进一步去分析该如何提高电路的工作频率。我们先来分析下是什么影响了电路的工作频率。我们电路的工作频率主要与 寄存器到寄存器之间的信号传播时...原创 2019-11-25 11:15:04 · 7653 阅读 · 4 评论 -
Verilog设计(四):边沿检测
关于边沿检测,应该很容易想要时钟的边沿,一般情况下,可以很容易得到时钟的上升沿。对于时序逻辑中,常用触发器进行设计,其时钟端cp就是边沿敏感的。在同步设计中,我们以时钟的上升沿作为参考,这时候要是想要得到另外一个信号的上升沿怎么办呢?边沿检测应该verilog设计或说数字电路设计中很基础且很常用的设计,比如启动信号的检测、数据有效信号的检测、将边沿信号转成脉冲信号等等(这里的边沿检测),反正就...原创 2019-09-05 21:24:01 · 12021 阅读 · 8 评论 -
数字电路基础:关于锁存器latch
锁存器是电平触发的控制器件,这与边沿触发的触发器是有着本质的区别的。锁存器是一种在异步时序电路系统中,对输入信号电平敏感的单元,用来存储信息。一个锁存器可以存储1bit的信息,通常,锁存器会多个一起出现,如4位锁存器,8位锁存器。锁存器在数据未锁存时,输出端的信号随输入信号变化,就像信号通过一个缓冲器,一旦锁存信号有效,则数据被锁存,输入信号不起作用。因此,锁存器也被称为透明锁存器...原创 2019-09-05 23:01:12 · 24324 阅读 · 1 评论 -
数字电路基础
【知识目标】(1) 理解亚稳态产生的物理意义(2) 理解触发器本身的建立时间和保持时间以及异步复位恢复的概念(3) 理解亚稳态恢复和同步寄存器的概念(4) 理解组合逻辑的延迟产生的原理,掌握系统时钟频率的计算(5) 理解并掌握时钟偏斜和抖动及其对时钟频率的影响(6) 理解提高系统时钟频率的两种方法(7) 了解False Path和多时钟周期的概念,知道使用False P...原创 2019-08-18 11:48:22 · 669 阅读 · 0 评论 -
数电基础:触发器的建立时间与保持时间及亚稳态
目录1. 亚稳态(Metastability)的物理意义2. 什么是亚稳态3. 亚稳态产生的原因4. Setup 和Holdup时间 4.1 建立时间 4.2 保持时间5. 异步复位恢复时间6. 建立时间、保持时间违例(violation)7. 亚稳态的恢复时间8. 寄存器的MTBF 建立与保持时间与亚稳态的概念要放在一起学习...原创 2019-08-18 21:35:35 · 7053 阅读 · 0 评论 -
Verilog设计(二):分频电路设计
目录1.偶数分频2. 奇数分频3.半整数分频 分频器是FPGA中常用的设计之一,在FPGA设计中担任重要的角色(时钟对于FPGA电路系统的重要性不言而喻!)。尽管大多数设计中会广泛采用厂家集成的锁相环PLL资源进行分频,倍频和相移(每个厂商Xilinx/Alter等其开发套件会提供各自的IP),但对对时钟要求不高的基本设计还是需要通过自行设计分频相移,可节省锁相环资源...原创 2019-06-04 10:55:02 · 24458 阅读 · 7 评论 -
关于格雷码
典型二进制格雷码(Binary Gray Code)简称格雷码,因1953年公开的弗兰克·格雷(Frank Gray,18870913-19690523)专利“Pulse Code Communication”而得名。 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因...原创 2018-11-20 20:30:28 · 1976 阅读 · 0 评论 -
2.专用硬线逻辑与微处理器的比较
以专用微处理器芯片为中心来构成完成算法所需的电路系统是一种较好的办法。利用现成的微处理器开发系统,在算法已用C语言验证的基础上,在开发系统工具帮助下把C语言程序转换为专用微处理器的汇编,然后再编译为机器代码,最后加载到样机系统存储区 即可以在开发系统工具的环境下开始相关算法的运算仿真或运算。该方法设计周期短、可用资源多;但速度、能耗、体积等性能受该微处理器芯片和外围电路的限制。 ...转载 2019-05-14 22:26:20 · 391 阅读 · 0 评论 -
Verilog发展历史
跟其他很多语言一样,如今的硬件描述语言并非是一天就发展起来的,都会有一个过程。而在这一过程中因为不断完善而衍生出不同的标准,我觉得在学习verilog语法的时候这也是我们学习时候应该需要了解的。就是因为标准不同,所以我们会看到很多不同风格的设计,不同公司企业有不同的要求,其实都是正确的。1983年末,Gateway设计自动化公司的工程师创立了Verilogs。当时Gateway设计自动化公司还...原创 2018-10-29 16:24:31 · 3130 阅读 · 1 评论 -
Simple Dual Port RAM(SDP)配置
参考文档:Xilinx官方文档《PG058-blk-mem-gen》、《UG473_7series_Memory_Resources》原创 2019-05-20 10:51:30 · 3083 阅读 · 0 评论 -
Vivado中Block Memory Generator IP核的使用V8.4
参考文档《pg058》Vivado中的存储相关coregeneratorVivado的IPcatalog中关于存储单元的IP在Memories&StorageElements中,MemroyInterfaceGenerator没有用过,应该是用于生成DDR2/DDR3/qdr2这些片外存储器接口控制器的:而BlockMemoryGenerator是...原创 2019-05-22 19:46:25 · 11051 阅读 · 0 评论 -
BMG核中的Collision Behavior
参考文档:UG473,PG058 碰撞(冲突)行为 Block Memory Generator核支持双端口RAM实现。 每个端口都是等效且独立的,但它们访问的是同一块内存空间。 在这种安排中,是否可能发生数据的冲突呢。1.异步时钟冲突 使用异步时钟读写时,当一个端口将数据写入一个内存位置时,另一个端口不可在某一指定的时...原创 2019-05-22 19:44:39 · 534 阅读 · 0 评论 -
数电基础:时序逻辑电路的时序分析
目录1.组合逻辑延迟2.时钟输出延迟Tco3.同步系统中时钟频率3.1 建立时间与保持时间都满足3.2建立/保持时间不满足(1) Tcomb太大导致建立时间不满足(2) 器件的固有保持时间增大(老化)使得保持时间违例4. 时钟偏斜及其影响4.1时钟偏斜的物理意义4.2 时钟偏斜对时序的影响(1) 对于未引入时钟偏斜时,保持时间与建立时间均不为例必...原创 2019-09-29 09:37:50 · 13323 阅读 · 1 评论 -
FPGA开发流程:综合(二)
目录1.连续赋值语句2.过程赋值语句 2.1阻塞赋值 2.2 非阻塞赋值 2.3 赋值对象 2.4赋值限制3.逻辑运算符4. 算术运算符 4.1无符号算术 4.2有符号数算术 4.3 进位的建模5.关系运算符 6.相等性运算符 7. 移位运算符8. 向量运算 9. 部分选取 10...原创 2019-11-25 11:13:52 · 1727 阅读 · 0 评论 -
Verilog语法:task or function
目录1. 函数与任务的不同2. task说明语句2.1task定义 2.2 任务的调用及变量的传递3. function说明语句3.1定义函数的语法参考文档:Xilinx UG 901 task语句和function语句是verilog设计中分别用于定义任务和函数的,通过定义task和function,能够将本来很大的程序模块分解为较小的任何函数...原创 2019-06-03 11:52:57 · 1572 阅读 · 2 评论 -
FIFO(四):异步FIFO的最小深度计算
目录1. 异步FIFO最小深度计算1.1异步FIFO最小深度计算原理1.2 异步FIFO最小深度常用计算公式1. 2.1假如读写FIFO是同时进行的1.2.2 读写FIFO不是同时进行的情况2. 异步FIFO最小深度计算实例2.1 用于SDRAM中的读写FIFO2.2异步时钟数据接口3.FIFO实例1. 异步FIFO最小深度计算 计算FIF...原创 2019-05-31 18:10:55 · 32230 阅读 · 14 评论 -
FIFO介绍(一)
(经整理)目录一、FIFO简介二、用途(1)跨时钟域多bit数据传输(2)达到数据匹配问题三、参数一、FIFO简介 FIFO:英文First In First Out 的缩写。本质上还是RAM,是一种先进先出的数据缓存器;与普通存储器的区别:没有外部读写地址线,这样使用起来非常简单。但缺点就是只能顺序写入数据,顺序的读出数据,...转载 2019-05-31 17:46:17 · 33971 阅读 · 0 评论 -
循环的综合
循环语句可以减少代码量,使得代码更加精简;但是可能会导致综合问题,因此在运用循环语句要非常小心。Xilinx建议是对于一些简单的信号连接方式变化,用循环语句是可接受的。如下面这一段只是实现多位输入信号到输出信号的位翻转(重映射):reg[3:0] dout;integer i;always@(posedge clk)begin for(i=0;i<=...原创 2019-05-27 20:41:15 · 285 阅读 · 0 评论 -
如何检查Jtag口是否烧坏
手上有一块黑金AX309的板子,Jtag口的排针间距是2.0mm,而我zturnboard上的下载线间距是2.54mm,贼尴尬。然后焊了一个转接板解决了,但是比较麻烦。最关键的是现在出现了在ISE上找不到设备的情况,不知道是我焊接的不牢固还是我带电插拔把JTAG口烧坏(带电插拔JTAG口会损坏FPGA芯片的JTAG口管脚)。 按道理现在板子高级了,应该都会有保护电路的吧,但是...原创 2019-05-22 19:43:38 · 4176 阅读 · 0 评论 -
BMG中的操作模式(Operate Mode)
每一个端口会有不同的操作模式可以选择,而这种模式会被用来决定这个端口中读写接口之间的关系(同一端口)。端口A和端口B都可以配置成三种模式之一:WRITE_FIRST mode 、READ_FIRSTmode以及NO CHANGE mode。每当端口A和B有地址冲突时,这种操作模式将会影响此时A端口和B端口之间的关系。Write FirstMode:在此模式下输入的数据在被写入存储...原创 2019-05-22 19:45:36 · 604 阅读 · 0 评论 -
FPGA 设计的常用思想与技巧(一) :乒乓操作
本文讨论的四种常用FPGA/CPLD设计思想与技巧: 乒乓操作、 串并转换、 流水线操作、 数据接口同步化, 都是FPGA/CPLD逻辑设计的内在规律的体现, 合理地采用这些设计思想能在FPGA/CPLD设计工作种取得事半功倍的效果。FPGA/CPLD的设计思想与技巧是一个非常大的话题, 由于篇幅所限, 本文仅介绍一些常用的设计思想与技巧, 包括乒乓球操作、 串并转换、 流水线操作和...转载 2018-10-22 17:00:09 · 4726 阅读 · 3 评论