FPGA
zpc0212
爱生活,爱篮球,爱昕昕
展开
-
verilog语言中,reg型与wire型的区别
对于初学者来说,首先一个大问题就是在读程序时候,变量类型reg型与wire型的区分。最近做了点仿真工作,对两种类型的变量有一些自己的见解,写一写,交流学习。自己的理解:wire型相当于是一根连线。reg型相当于是储存器。在wire型相当于连线的基础上我们很容易就可以理解,当连线的来源端发生改变时,wire变量立即随之发生改变。由此:wire型变量存在于begin...end...原创 2018-09-15 18:45:43 · 11705 阅读 · 0 评论 -
对FPGA跨时钟域处理的自己理解
为什么要做跨时钟域的处理?打一个不太恰当的例子,时钟相当于我们人体的“心脏”,伴随时钟产生的数据流就是相当于血液。假设人体中有多个小心脏,当心脏A的血液进入心脏B支撑的系统时就会产生混乱。为了防止这种情况的产生,需要对“跨心脏”的数据做处理。这个处理就是跨时钟域处理。跨时钟域处理的两种方式1.两级触发器级联(打两拍)对于单bit数据,常用的处理跨时钟域方式为两级触发器级联方式。...原创 2019-05-23 15:46:49 · 2640 阅读 · 0 评论 -
VIVADO中WNS,WHS,TNS,THS含义
最近在推进项目进度,由于数据总线宽度达到1024位(K7还是厉害),使用VIVADO过程中时序警告特别大。所以关注了一下时序警告的具体含义。运行“report_timing”或“report_timing_summary”命令后,会注意到 WNS、TNS、WHS 和 THS。WNS 代表最差负时序裕量 (Worst Negative Slack)TNS 代表总的负时序裕量 (Tot...原创 2019-03-25 23:22:01 · 29943 阅读 · 2 评论 -
经典设计实例_整理加解释(25-35)
26.调用门原件实现的1位半加器module half_add1(input a,input b,output sum,output cout);and (cout,a,b);xor (sum,a,b);endmodule半加器电路是指对两个输入数据位相加,输出一个结果位和进位,没有进位输入的加法器电路。 一位半加器是实现两个一位二进制数的加法运算...原创 2019-03-08 11:26:13 · 453 阅读 · 1 评论 -
串行FIR滤波器---Verilog设计
数字滤波器从实现结构上划分,有FIR和IIR两种。FIR的特点是:线性相位、消耗资源多;IIR的特点是:非线性相位、消耗资源少。由于FIR系统的线性相位特点,设计中绝大多数情况都采用FIR滤波器。线性相位系统的意义,这里的线性相位指的是在设计者关心的通带范围内,LTI系统满足线性相位要求:从延时的角度看:保证了输入信号的相位响应是线性的,即保证了输入信号的延时特性。从相位的角度看:输入的各...转载 2019-03-11 18:44:37 · 713 阅读 · 2 评论 -
Verilog中定义存储器
reg [7:0] mem[0:255];Verilog中含有用户自己定义存储区的语句,如上述语句,定义的意思为reg [7:0] mem[0];reg [7:0] mem[1];reg [7:0] mem[2];reg [7:0] mem[3]; : : :reg [7:0] mem[255];定义了256个8位的寄存器型数...原创 2019-03-11 14:11:33 · 14357 阅读 · 1 评论 -
经典设计实例_整理加解释(36-43)
36.$time与$realtime的区别1)$time`timescale 10ns / 1ns //仿真时间尺度module time_dif();reg ts = 1'b0;parameter delay = 2.6;initial begin #delay ts = 1'b1; #delay ts = 1'b0; ...原创 2019-03-10 21:46:01 · 345 阅读 · 1 评论 -
经典设计实例_整理加解释(21-25)
21.条件编译举例module compile(input a,input b,output out);`ifdef add //宏名为add out <= a + b;`else out <= a - b;`endifendmodule`ifdef 为条件编译语句,只有当程序中宏定义过`ifdef后的宏名,才进行...原创 2019-03-06 15:18:22 · 238 阅读 · 2 评论 -
转载:【 Verilog HDL 】case, casez, casex 之干货总结
原地址:https://blog.csdn.net/Reborn_Lee/article/details/82390445 这几天在做一个无人机定位的项目,时间比较紧,自己也不太懂,所以就边忙别愁就没有了精力写博客了。可是想想这样也不好,还是抽出点时间写博客,即使写的比较简单也行,至少能解答自己的疑惑就够了。Verilog HDL中的case语句有两种变种,ca...转载 2019-03-05 22:57:08 · 1852 阅读 · 0 评论 -
经典设计实例_整理加解释(14-20)
例14.模为60的BCD码加法计数器module count60(input [7:0] data,input clk,input reset, input cin,//计数使能output [7:0] qout,output cout);always@( posedge clk)begin if(reset)...原创 2019-03-05 22:46:18 · 778 阅读 · 0 评论 -
integer型变量的理解
转载:http://www.cnblogs.com/dangxia/archive/2012/03/10/2389685.html今天看代码时遇到了integer,只知道这是个整数类型,可详细的内容却一窍不通,查看了资料---《verilog数字VLSI设计教程》。其中是这么写到的:大多数的矢量类型(reg或者net)都被默认当做无符号数。integer和real是个例外,它们被默认为当做...转载 2019-03-05 21:42:40 · 2026 阅读 · 0 评论 -
经典设计实例_整理加解释(1-13)
例1. 四位全加器module adder_4(input [3:0] in_a,input [3:0] in_b,input in_c,output [3:0] sum,output out_c);assign {out_c,sum} = in_a + in_b + in_c;endmodule全加器英语名称为full-adder,是用门电路实现两个二进制数相加并求出...原创 2019-03-05 16:29:38 · 380 阅读 · 0 评论 -
大小端问题
最近在项目进行中遇到了大小端配置问题。需要在FPGA中给DSP配置大小端工作模式,所以查阅了一些大小端的博客。大小端解析 端模式出自Jonathan Swift书写的《格列佛游记》一书,这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian。小人国的内战就源于吃鸡蛋时是...转载 2018-11-04 20:43:56 · 1582 阅读 · 0 评论 -
关于Vivado Simulator-ERROR: Cannot find design unit work. in library work located at xsim.dir /work
当在Vivado进行功能仿真时,经常会出现下方错误:在谷歌之后发现解决办法并不是很好用。经过多次改正程序后发现,这个错误的主要原因是FPGA程序中有逻辑错误。由于Vivado纠错能力较差,一般的语法错误会提示,但是逻辑错误一般不会提示,所以在进行仿真的时候会出现错误。建议:可以将Vivado与MODELSIM关联,然后应用MODELSIM进行逻辑纠错。...原创 2018-09-09 10:55:15 · 3236 阅读 · 1 评论 -
verilog代码中避免出现latch方法
一:出现latch的情况?在组合逻辑中,有时候往往不需要生成latch,所以必须知道某些信号会综合为latch,通过实践发现下面两类会出现latch:1.在if-else和case中没有else和default将会导致产生latch。这个在夏宇闻的verilog中有讲到。2.即使if-else 和case语句都满足if都有else,caes都有default,此时还是有可能出现latc...转载 2019-09-01 17:40:35 · 1995 阅读 · 0 评论