
FPGA
IC媛
这个作者很懒,什么都没留下…
展开
-
notepad++安装包百度云资源
https://pan.baidu.com/s/1IjA5Msc7_iLi242GbIHx7Q提取码:jolhnotepad++和vivado的关联可以看这篇文章:notepad++和vivado的关联原创 2021-12-09 22:58:36 · 12749 阅读 · 1 评论 -
vivado和notepad++关联
下面分析vivado 2016.1和notepad++8.1的关联步骤,以及如何安装compare插件及其使用步骤。notepad++8.1安装包百度云链接:notepad++安装包百度云资源提取码:jolh关联具体步骤:第1步:打开vivado,找到Tools>>options:第2步:如下图所示,找到Text Editor>>Current Editor>>Custom Editor第3步:注意这里的路径要写成反斜杠。第4步:此时点击vivad原创 2021-12-09 22:52:07 · 10622 阅读 · 0 评论 -
当VIVADO中时序报告中的建立时间和保持时间不对的时候,应该如何修改呢?
1、首先要学会看vivado中的时序报告Vivado时序报告中涉及到的参数:1)setup建立WNS(Worst negative Slack):最坏负松弛,所有时序路径上的最坏松弛,用于分析最大延迟。WNS为负数的时候表示有问题,为正时表示没有冲突。TNS(Total Negative slack):总的负松弛,当只考虑每个时序路径端点最坏的冲突时,所有WNS的和。当满足所有的时序约束时,为0ns;否则,有冲突时,为负数。Number of Failing Endpoints(失败端点的个数)原创 2021-05-29 23:39:55 · 19679 阅读 · 4 评论 -
Vivado调试工程心得
调试心得:1、vivado中implement的时候报错显示多驱动的时候,可能是在多个always块中对同一个变量赋值。2、 时序报错的时候,出来垮时钟域需要set false,不进行静态时序分析外,差分时钟中也需要set false,具体如下:约束文件里加以下语句时序报告就是对的了。这点容易忽略,写下来记着。...原创 2021-06-17 09:50:18 · 645 阅读 · 0 评论 -
FPGA调试心得
最近一直在下板调试项目,有一点心得,想要记录一下。1.下板之前明明已经仿真通过了了,为啥下板的时候还有问题?才开始我抱着侥幸的心理,一直debug抓信号看现象,没有去实质性得分析具体原因,就一直浮在表面。这是不可取的,debug抓信号是肯定需要的,但是一定要根据现象去分析原因,尽快把问题定位出来。2.一般问题会出现在哪里呢?这需要分析modelsim仿真和实际下班的区别了!我觉得最大的区别在于输入,仿真的输入是自己给的,是一种比较理想的情况,下板调试的输入是实际的外部输入,这两者是会存在差异的。3原创 2021-07-22 00:37:16 · 446 阅读 · 0 评论 -
ASIC和FPGA基本开发流程及其详细解释
一、ASIC基本开发流程详细解释详细解释来源于**《高级ASIC芯片综合》**1、综合:从RTL级到门级网表的转换,综合工具:Synopsys 的DC(design compiler),DC内建静态时序分析机,可以进行模块级静态时序分析。2、静态时序分析工具:Synopsys 的PrimeTime,对整个设计布图前的静态时序分析。3、形式验证:将RTL和综合后的网表进行对比。常用工具:Synopsys的Formality设计可以用三个抽象层次来表示:行为级、寄存器传输级(RTL)、结构级门级原创 2021-05-15 20:56:17 · 3492 阅读 · 0 评论 -
阻塞赋值和非阻塞赋值的深度理解
1、先看看常问的问题1.1简单叙述阻塞赋值和非阻塞赋值的区别:(1)阻塞赋值(=)必须是阻塞赋值完成后,才进行下一条语句的执行;赋值一旦完成,等号左边的变量值立即变化。在同一个块中,非阻塞赋值表达式的书写顺序不影响赋值的结果。硬件没有对应的电路。(要点为串行,立即生效)(2)非阻塞赋值(<=),在赋值开始时计算表达式右边的值,在本次仿真周期结束时才更新被赋值变量,即赋值不是立即生效的;非阻塞赋值允许块中其他语句同时执行。在同一个块中,非阻塞赋值表达式的书写顺序不影响赋值的结果。硬件有对应的电路。原创 2021-05-10 23:33:36 · 35059 阅读 · 12 评论 -
VIVADO中约束文件怎么写
约束文件怎么写:Vivado中的xdc是基于Synopsys的设计约束(SDC),同时也是Xilinx专有的物理约束。我这次主要用到时钟约束和引脚约束,两者都有文本设置和GUI设置。具体的实现过程,可以看《Xilinx FPGA权威设置指南》时钟约束和I/O管脚约束:(1)时钟约束set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets sys_clk]set_property PACKAGE_PIN J8 [get_ports {sys_clk_p[原创 2021-04-25 10:35:26 · 11172 阅读 · 2 评论 -
MLVDS和RS485的特性
RS485是怎么测试的:通过VIO模拟REN、DE、tx的数据,观察rx收到什么。得到的结论如下:MLVDS同理:也是通过VIO模拟REN、DE、tx的数据,观察rx收到什么原创 2021-04-25 10:31:53 · 1520 阅读 · 0 评论 -
FPGA中静态时序分析的作用
静态时序分析的作用这篇文章内容来源于《Xilinx FPGA 权威设计指南》(1)一个设计是由单元和网络的互连组成的。(2)一个器件的性能由构成设计单元的延迟决定,它可以通过静态时序分析(Static Timing Analysis,STA)验证。(3)在STA中,设计元器件的功能显得并不重要。(4)对于设计中的元器件,都需要花费时间执行它的功能。对于一个LUT:存在从它的输入到输出的传播延时。对于一个网络:存在从驱动器到接收器的传播延时。对于一个触发器:在它的采样点周围的一个时间内要求有稳原创 2021-04-25 10:29:30 · 1061 阅读 · 0 评论 -
Window10下Hyper-V的安装、虚拟机的添加以及Ubuntu18的安装教程
(1)打开控制面板,找到程序与功能,选中“启动或关闭Windows功能”,如下图所示:(2)如下图所示,选中Hyper-V(3)重启电脑(4)重启后再搜索处,直接搜索Hyper-v管理器。(5)点击下图红色框内容,右键新建虚拟机,如下图所示:(6)安装关于代数:我最开始安装第二代,但是后期打不开虚拟机。我选择第一代啥毛病都没有。启动内存可以按照提示的范围自己定。我选择的2048MB...原创 2021-03-09 09:56:36 · 1949 阅读 · 6 评论 -
计算机体系结构设计---指令的基本概念和基本指令
原创 2021-01-29 10:24:08 · 272 阅读 · 0 评论 -
读书笔记《计算机体系结构设计》---总线结构
因为本科没有学过计算机体系结构相关课程,但是项目经常涉及这方面的知识,现在开始打卡学习《计算机体系结构设计》,不定期的把学习的心得体会分享出来。1、总线内容概述:2、例题例题1(重要):某64位的CPU,使用时钟频率为100MHz的32位数据总线,若总线传输包含4个时钟周期,求总线的最大数据传输率?若想提高一倍数据传输率,有什么方法?解:1、总线的最大数据传输率是指在单位时间内传输的数据量:数据传输率=D/T=Df=(32/8)(100/4)=100MB/s.题目中的时钟频率应该是指总线时钟频原创 2021-01-19 11:32:52 · 391 阅读 · 0 评论 -
仿真时所有信号的波形都是高阻态或者一片空白怎么解决?
今天在测试模块功能的时候出现这样的一个现象:我点击“Run simulation”,Vivado能够不报错,但是得到的结果确是所有的信号都是蓝色的,时钟也没有出现。我回头检查了好几遍,我的testbench,和之前写的没有差别,后面发现我只把Design source中我想要仿真的文件设置为顶层了,却忽略了simulation source中同样也需要将相应的文件设置为顶层。这个现象之所以出现,是因为我的工程中有多个Design文件和多个simulation文件,如果我想对某一个文件单独跑仿真,就需要把相原创 2021-01-15 15:03:13 · 6185 阅读 · 4 评论 -
if else 语句是有优先级的
下午验证时间模块time_value时深刻体会到了if else 语句是有优先级的。(1)正确的情况正确现象:count在count_start为1的时候,每来一个时钟就自动加1,加到20的时候就清零从头开始加,ma_r则在count值为20的时候加1.正确代码在这里插入代码片always@(posedge clk or negedge rst_n)if(!rst_n) begin count<=0;endelse if((count_start==1)&&(count原创 2021-01-14 16:29:55 · 1836 阅读 · 3 评论 -
vivado中fifo ipcore的empty和dout输出特征
今天写整形模块的时候想要用fifo的empty信号,所以研究一下empty的信号特征:(1) 复位的时候(低电平有效,即为0),empty线是红色的,代表既不是0也不是1,复位信号无效(即为1)且尚未有数据输入的时候,empty为1;(2) Empty啥时候变为0呢?当第一组数据输入完成时empty有1变为0。如下图所示:再回顾一下输出dout的信号特征:信号输出dout的特征是啥呢?第一次读的时候,dout先保持为0一个周期,再读写入的值。Rd_en后,dout的数据首先保持一个时钟,即原创 2021-01-12 16:08:08 · 4221 阅读 · 0 评论 -
关于状态机(一、二、三段式)描写的原理、模板及小梅哥课字符串Hello检测状态机的总结及拓展
1、原理状态机全称是有限状态机(Finite State Machine,FSM),是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。这里将学习状态机的相关概念并使用状态机实现特定字符串的检测。理解一段式、二段式以及三段式状态机的区别以及优缺点。Mealy状态机(与输入和当前状态有关)Moore状态机(只与当前状态有关)内容:输入、输出、状态、状态转移条件状态机的描述方式:一段式、二段式以及三段式(1)一段式,整个状态机写到一个always模块里面。在该模块中既描述状态和状态转移,原创 2020-07-16 14:20:52 · 2712 阅读 · 1 评论 -
寄存器、锁存器和触发器的区别与联系
先来一个小结:触发器构成寄存器(有时钟;通常为边沿D触发器,数据先有效,控制信号后有效)。锁存器由钟控D触发器(无时钟;控制信号先有效,数据后有效;由于不锁存数据的时候输出随输入变化而变化,输出有毛刺,在FPGA中尽量避免使用)。本文参考了以下链接:链接1链接2链接3链接4链接51、基本概念(1)触发器:触发器是边沿敏感的存储单元,数据存储的动作由某一信号的上升或者下降沿进行同步的。触发器是计算机记忆装置的基本单元,一个触发器能储存一位二进制代码。寄存器是由触发器组成的。一个触发器可以组转载 2020-07-14 16:46:56 · 19397 阅读 · 1 评论 -
用分频和计数器两种方法实现LED每隔1ms亮一次,每隔0.8ms灭
/*需要实现的功能:LED亮1ms,灭0.8ms;默认系统频率为50MHz,那么周期就20ns*//*方法一:利用计数器*/`timescale 1ns / 1psmodule LED_2(input clk,input Rst_n,output reg led);reg [16:0] count;//reg led_temp=1;//assign led=led_temp;always@(posedge clk or negedge Rst_n)begin if(!Rst原创 2020-07-07 20:45:14 · 1319 阅读 · 0 评论 -
利用分频和计数器实现LED1ms翻转1次
/*led每1秒翻转一次,周期为2s,系统时钟频率是50M,(1/50M)20ns为一个周期*//*方法一:通过分频来实现*/`timescale 1ns / 1psmodule LED_1(input clk,input Rst_n,output reg led);reg [31:0]div_cnt;reg divclk;always@(posedge clk or negedge Rst_n)begin if(!Rst_n) begin div_cnt=0;led<=0原创 2020-07-07 20:37:57 · 813 阅读 · 0 评论 -
Verilog中分频数的计算
才开始学Verilog的时候不知道分频是怎么计算的,经过一段时间的学习后,总结如下,如有错误,请大家指正~ 例如:系统频率为50M,要控制LED,系统频率太高,直接使用系统频率,人眼将无法看到灯的亮灭;因此要进行分频。那么分频数怎么求呢?原创 2020-07-07 20:20:18 · 8654 阅读 · 0 评论 -
入门Verilog---赋值和各种运算符小结
入门Verilog—赋值和各种运算符小结第一次写博客,想要把入门FPGA的一些总结记录下来。如果能对你有帮助,那是最好不过了,哈哈哈。以下很多内容都是借鉴书籍《Xilinx FPGA开发实用教程》而得。主要包括连续赋值语句、过程赋值,以及这两者的区别,如果不加以区分,写出来的代码是会有bug的(提醒变量类型不对啥的),我吃了好多次亏了。再总结了关系运算符(8种)、逻辑运算符(3种)、位运算符(7种)、条件运算符、移位运算符、拼接运算符、循环移动。1赋值(1)连续赋值-assignAssign语原创 2020-06-30 00:14:44 · 4484 阅读 · 0 评论