- 博客(84)
- 收藏
- 关注
原创 systemverilog读写二进制文件
int rd; int file = $fopen(path,"wb"); // open in binary mode if (!file) begin $error("File could not be open: ", path); return; end $fwrite(file, "%u", 32'h4D424D42); $fclose(file); // read back binary data from file file = $fopen (path,"r
2022-01-10 20:17:10 3300
原创 [Labtoolstcl 44-494] There is no active target available for server at localhost.
重启,然后参考Vivado常见问题之实验箱连接出错 [Labtoolstcl 44-494] There is no active target available for server at localhost.、
2021-08-20 13:57:05 1919
原创 vivado编辑器编写的代码用vscode打开出现乱码的问题
vivado工程代码使用vscode打开的方式参考用 Vscode 代替 Vivado 原生编辑器上面设置好了之后,如果之前的工程是直接用vivado自带编辑器写的,其采用的是ANSI编码格式,然而VSCODE里面没有这种编码格式选项,vscode的默认编码方式为utf-8,首先需要将vscode的默认编码方式更改为GB2312,更改方式为:文件-首选项-设置-搜索encoding 将编码方式改为GB2312即可上面设置好了之后双击vivado工程里面的文件,vscode打开后就不会出现乱码的问题了
2021-08-18 16:44:40 3497 2
原创 2021-07-13笔记torch cuda、python对应版本及安装
各种torch、torchvision 找到了满意的torchPytorch版本、CUDA版本与显卡驱动版本的对应关系cuda版本查看:cuda驱动下载cudnn和cuda的关系windows查看cudnn版本pytorch官网安装对应cuda版本的torch,一步到位anaconda更改python版本...
2021-07-15 09:19:00 2104
原创 fpga与海思BT1120调试问题记录
项目需要将图像数据通过BT1120发送到海思芯片,为了使海思能最大概率采集到正确数据,需要将bt1120的随路时钟与bt1120数据中心尽可能对齐。因此需要一个与bt1120数据产生时钟相移180°的时钟。开始时通过反向器取反的方式输出一个随路时钟,发现海思时钟都不能接收到数据,反向时钟生成方式如下:assign bt1120_clk_output = ~ clk_in;综合出的原理图如下:中间经过了一个查找表,不知道是不是经过查找表产生的时钟延时不能满足要求导致时钟不能中心对齐数据中心,.
2021-06-15 15:45:51 1804
原创 差分时钟输入到IBUGDS遇到的问题
好像是引脚R8不能作为IBUGDS时钟引脚。原理图上的时钟适用于MGT的,MGT是高速串行收发器模块的简称,不能作为全局时钟树的输入时钟
2021-05-28 08:47:26 287
原创 VIVADO使用误区与进阶之9:读懂用好Timing Report
一、静态时序分析静态时序分析( Static Timing Analysis)简称 STA,采用穷尽的分析方法来提取出整个电路存在的所有时序路径,计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足时序要求,通过对最大路径延时和最小路径延时的分析,找出违背时序约束的错误并报告。STA 不需要输入向量就能穷尽所有的路径,且运行速度很快、占用内存较少、覆盖率极高,不仅可以对芯片设计进行全面的时序功能检查,而且还可以利用时序分析的结果来优化设计。所以 STA 不仅是数字集成电路设计 Timing
2021-05-21 13:24:58 1226
原创 VIVADO使用误区与进阶之8:在Vivado中实现ECO功能
一、什么是ECO?ECO 指的是 Engineering Change Order,即工程变更指令。目的是为了在设计的后期,快速灵活地做小范围修改,从而尽可能的保持已经验证的功能和时序。 ECO 的叫法算是从 IC 设计领域继承而来,其应用在FPGA设计上尚属首次,但这种做法其实在以往的 FPGA 设计上已被广泛采用。简单来说, ECO 便相当于 ISE 上的 FPGA Editor。二、ECO的应用场景和实现流程ECO 的应用场景主要包含:修改 cell 属性、增减或移动 cell、手动局部布线
2021-05-21 09:41:02 887
原创 VIVADO使用误区与进阶之7:用Tcl定制Vivado设计实现流程
一、基本的FPGA设计实现流程FPGA 的设计流程简单来讲,就是从源代码到比特流文件的实现过程。大体上跟 IC 设计流程类似,可以分为前端设计和后端设计。其中前端设计是把源代码综合为对应的门级网表的过程,而后端设计则是把门级网表布局布线到芯片上最终实现的过程。ISE 中设计实现的每一步都是相对独立的过程,数据模型各不相同,用户需要维护不同的输入文件,例如约束等,输出文件也不是标准网表格式,并且形式各异,导致整体运行时间过长,冗余文件较多。Vivado 中则统一了约束格式和数据模型,在设计实现的任何
2021-05-21 09:24:23 763 1
原创 VIVADO使用误区与进阶之6:Tcl在Vivado中的应用
1. Tcl的背景介绍和基础语法Tcl(读作 tickle)诞生于 80 年代的加州大学伯克利分校,作为一种简单高效可移植性好的脚本语言,目前已经广泛应用在几乎所有的 EDA工具中。Tcl 的最大特点就是其语法格式极其简单甚至可以说僵化,采用纯粹的 [命令 选项 参数] 形式,是名副其实的“工具命令语言”( 即 Tcl 的全称 Tool Command Language)。实际上 Tcl 的功能可以很强大,用其编写的程序也可以很复杂,但要在 Vivado 或大部分其它 EDA 工具中使用,则只需掌握其
2021-05-20 16:34:45 963
原创 VIVADO使用误区与进阶之5:XDC约束技巧之I/O篇(下)
1. Output接口类型和约束FPGA 做 Output 的接口时序同样也可以分为系统同步与源同步。在设置 XDC 约束时,总体思路与 Input 类似,只是换成要考虑下游器件的时序模型。另外,在源同步接口中,定义接口约束之前,需要用create_generated_clock 先定义送出的随路时钟。1.1 系统同步接口与 Input 的系统同步接口一样, FPGA 做 Output 接口的系统同步设计,芯片间只传递数据信号,时钟信号的同步完全依靠板级设计来对齐。所以设置约束时候要考虑的仅仅是下
2021-05-20 13:14:45 515
原创 VIVADO使用误区与进阶之4:XDC约束技巧之I/O篇(上)
1.I/O约束的语法XDC 中可以用于 I/O 约束的命令包括 set_input_delay /set_output_delay 和 set_max_delay / set_min_delay 。其中,只有那些从FPGA 管脚进入和/或输出都不经过任何时序元件的纯组合逻辑路径可以用set_max_delay / set_min_delay 来约束,其余 I/O 时序路径都必须由set_input_delay / set_output_delay 来约束。如果对 FPGA 的 I/O 不加任何约束,
2021-05-20 10:05:29 1200
原创 VIVADO使用误区与进阶之3:XDC约束技巧之CDC篇
1. CDC的定义与分类CDC 是 Clock Domain Crossing 的简称, CDC 时序路径指的是起点和终点由不同时钟驱动的路径。在电路设计中对这些跨时钟域路径往往需要进行特别的处理来避免亚稳态的产生,例如使用简单同步器、握手电路或是FIFO 来隔离。安全的CDC路径:所谓安全的 CDC 路径是指那些源时钟和目标时钟拥有相同的来源,在FPGA 内部共享部分时钟网络的时序路径。这里的安全指的是时钟之间的关系对 Vivado®来说是全透明可分析的。不安全的CDC路径:不安全的 CDC 路
2021-05-20 08:11:01 1543 2
原创 VIVADO使用误区与进阶之2:XDC约束技巧之时钟篇
一:XDC的基本语法XDC 的基本语法可以分为时钟约束、 I/O 约束以及时序例外约束三大类。根据 Xilinx 的 UltraFast 设计方法学中 Baseline 部分的建议( UG949 中有详细介绍),对一个设计进行约束的先后顺序也可以依照这三类约束依次进行。1. 时钟约束时钟约束必须最早创建。vivado自动推导的衍生时钟好处:MMCM/PLL/BUFR 的配置改变而影响到输出时钟的频率和相位时,用户无需改写约束, Vivado 仍然可以自动推导出正确的频率/相位信息。劣势:用
2021-05-19 21:08:03 1197
原创 VIVADO使用误区与进阶之1:十分钟教会你UltraFast
第一章:十分钟教会你UltraFast时序收敛十大准则:准则一:合适的风格代码理想环境下,源代码可以独立于最终用于实现的器件,但是由于底层器件各自独特的结构,决定了通用代码的效率不佳,要最大化发挥硬件的性能,需要为实现工具和器件量身定制代码。准则二:精准的时序约束精准的时序约束是设计实现的基础,过约束反而会阻碍时序收敛。通常第一次运行时只需要约束所有时钟,然后在内部路径基本满足时序约束的情况下加入关键 I/O 的约束,其次再考虑必要的时序例外约束。Baseline 基线方法可以说是 Ul
2021-05-19 17:16:35 1124
原创 Vivado公开课-01基础篇:Vivado一切超乎想象 笔记
主要介绍3个部分vivado强大的分析能力vivado增强可视化分析能力灵活的互动性一.vivado强大的分析能力设计分析主要包括以下一些方面:时序Timing时钟网络Clock networks时钟交互Clock interactionUltra Fast 设计方法学(UFDM)设计规则检查(DRC)资源利用率(Utilization)功耗(Power)在综合或者布局布线后可以看到以上设计条目。以上条目也可以通过Tcl命令执行。1.时序分析下面是时序分析的
2021-05-17 10:26:36 1457 1
原创 FPGA里的bank是什么意思
参考链接就是共用一个电源的一组I/O管脚。为了便于管理和适应多种电器标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压VCCO决定,一个bank只能有一种VCCO,但不同bank的VCCO可以不同。只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的基本条件。...
2021-05-12 15:28:54 3039
原创 [Place 30-99] Placer failed with error: ‘lO Clock Placer failed‘
参考链接Verilog顶层模块的clk时钟引脚必须绑定板子特定的时钟引脚
2021-05-12 15:26:16 6419
原创 pyqt5 progressBar引起的界面闪退的问题
progress = int(100 * self.idx3 / len(self.img_bgd_list_use))self.progressBar3_1.setValue(progress)直接使用以上代码会引起界面闪退,在用变量设置progressBar之前需要对progressBar进行初始化赋值,如self.progressBar3_1.setValue(0)...
2021-05-10 10:30:05 1110
原创 如何解决IP模块内部出现的时序问题
在项目设计中用到了shift_register,设计完成后发现时序问题出现在shift_register内部,如下图所示:尝试将综合策略由默认改为性能最优保持时间的时序问题由原来的362减少为324,但是仍然没有解决根本问题解决方案参考1解决方案参考2相同问题...
2021-05-09 15:11:21 2340
原创 Detail enhancement for high-dynamic-range infrared images based onguided image filter 阅读笔记
论文链接摘要采用引导滤波器分离细节层和背景层,利用改进的直方图投影方式将背景层压缩到8bit,利用滤波器加权系数的增益掩模增强细节分量,然后将两部分进行重组。1 介绍考虑到显示器的显示范围以及人眼的视觉只能区分128个灰度级,因此需要进行动态范围压缩。常用的图像增强技术:(1)gama校正(2)AGC(简单,去除极值线性量化)(3)HE(非线性映射,但增强噪声,丢失细节,均匀区域被冲刷?)(4)HE衍生:全局直方图global HE(GHE),可通过调整参数抑制均匀区域的增强,包
2021-04-25 09:59:47 1288 3
原创 小数在fpga中怎么表示
小数在fpga中怎么表示在vivado的除法器IP中,小数部分最高位为符号位:除法小数点带符号fpga里面做小数乘法的问题:添加链接描述添加链接描述
2021-04-08 22:00:32 1922
原创 use of clock signal in expression not supported
不能在表达式中使用时钟信号。always @(posedge clk_in)begin bt1120_clk_output <= clk_in;//不能在表达式中使用clk信号 rstn_d1 <= rst_n; rstn_d2 <= rstn_d1;end
2021-04-07 12:26:42 1041
原创 visual studio C++ mkdir 路径创建失败的原因之一
img_write_path.assign("D:\\\\gd\\\\tiff_8bits\\\\" + CurrentDirPaths[i] + "\\\\" + "hist" + "\\\\");const char* strDirPath = "D:\\gd\\高德tiff数据_8bits\\hist";if (0 != access(img_write_path.c_str(), 0)){ // if this folder not exist, create a new one. if(
2021-03-19 10:45:56 2368
原创 使用template造成的错误:LNK:2019:无法解析的外部符号“void _cdecl...,该符号在函数...中被引用
使用了template的函数必须将定义和声明同时放在.h文件中,不能将定义放在.cpp,而将声明放在.h中。否则编译器在链接执行时找不到函数的定义。
2021-03-18 12:50:07 597
原创 第11章:关联容器
11.1 使用关联容器使用map一个经典的使用关联数组的单词计数程序:使用set11.2 关联容器概述关联容器不支持顺序容器的位置相关的操作,例如push_front或push_back,原因是关联容器中的元素是根据关键字存储的。11.2.1 定义关联容器定义一个map时,必须既指明关键字类型又指明值类型;而定义一个set时,只需要指明关键字类型,因为set中没有值。初始化multimap或multiset一个map或set中的关键字必须是唯一的,即,对于一个给定的关键字,智能有一个
2021-03-11 23:06:40 121
原创 第10章:泛型算法
顺序容器只定义了很少的操作,在多数情况下,我们可以添加和删除元素,访问首尾元素,确定容器是否为空以及获得只想首元素或尾元素之后位置的迭代器。如果用户还希望做其他更多有用的操作呢:比如查找特定元素,替换或删除一个特定值,重排元素顺序等。标注好难看并未给每个容器都定义成员函数来实现这些操作,而是定义了一组泛型算法,称它们为算法是因为他们实现了一些经典算法的公共接口,如排序和搜索,称它们是泛型的,是因为它们可以用于不同类型的元素和多种容器类型,不仅包括标准库类型,如vector或list,还包括内置数组类型。
2021-03-09 23:44:34 1081
原创 差分时钟作用
在用mig仿真DDR时,migIP核接口中包含了差分时钟。差分时钟是DDR的一个重要且必要的设计,但大家对CK#(CKN)的作用认识很少,很多人理解为第二个触发时钟,其实它的真实作用是起到触发时钟校准的作用。由于数据是在CK的上下沿触发,造成传输周期缩短了一半,因此必须要保证传输周期的稳定以确保数据的正确传输,这就要求CK的上下沿间距要有精确的控制。但因为温度、电阻性能的改变等原因,CK上下沿间距可能发生变化,此时与其反相的CK#(CKN)就起到纠正的作用(CK上升快下降慢,CK#则是上升慢下降快)。.
2021-03-09 10:56:41 4796
原创 将int8_t输出为16进制文件保存的时候出现多了很多f
fprintf(fp, "%02x", int8_t(-10));输出结果:fffffff6-10的十六进制表示是f6,但是在f6之前还有6个f,即使十六进制输出格式控制要求两位也没有用。解决方法:fprintf(fp, "%02hhx", (int8_t)(-10));输出结果:f6...
2021-03-05 15:42:13 545
原创 cuDNN error: CUDNN_STATUS_INTERNAL_ERROR
参考链接RuntimeError: cuDNN error: CUDNN_STATUS_INTERNAL_ERROR众所周知,该错误很难调试,但是令人惊讶的是,常常是内存不足的问题。通常,您会遇到内存不足错误,但是根据发生的位置,PyTorch无法拦截错误,因此无法提供有意义的错误消息。由于电脑配置有点差,在跑网络的时候打开了两个vivado工程和两个C++工程,导致电脑内存被占用,因此无法正常启动cuda,将上述工程关掉之后cuda启动正常...
2021-03-03 11:30:35 7125
原创 第8章:IO库
8.1 IO类IO类型间的关系继承的关系8.1.1 IO对象无拷贝或赋值进行IO操作的函数通常以引用方式传递和返回流。8.1.2 条件状态IO 可能出现错误,IO类定义了一些函数和标志帮助我们访问和操纵流的条件状态。查询流的状态IO库定义了一个与机器无关的iostate类型用于流的状态查询,可通过标准库函数进行查询管理条件状态rdstate成员返回iostate,对应流的当前状态,setstate成员将给定条件置位,表示发生对应错误。clear用于清除标志位。8.1.3 管
2021-03-01 00:10:28 62
原创 第7章:类
类的基本思想是数据抽象和封装。数据抽象是一种依赖于接口和实现分离的编程技术。类的接口包括用户所能执行的操作,类的实现则包括类的数据成员,负责接口实现的函数体以及定义类所需的各种私有函数。封装实现了类的接口和实现的分离,封装后的类隐藏了它的实现细节,也即是说类的用户只能通过接口而无法访问实现部分。类想要实现数据抽象和封装,需要首先定义一个抽象数据类型,在抽象数据类型中,由类的设计者负责考虑类的实现过程;使用该类的程序员则只需要抽象地思考类型做了什么,而无需了解类型的工作细节。7.1 定义抽象数据类型
2021-02-28 21:34:22 195
USB2.0主从机EHCI裸机驱动与鼠标示例代码及说明文档
2024-09-22
xilinx zynq7000 USB2.0官方示例工程
2024-09-22
增强型主机控制器接口(EHCI)规范
2024-09-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人