![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FPGA
公众号:随喜读书会
从材料专业换行IT的码农。
展开
-
QUARTUS II修改IP核代码步骤
直接在QUARTUS编译器中修改ip核的代码,编译后会出现代码重置到修改前状态的情况。可以使用如下步骤:一,到文件中修改代码,而后保存;比如要修改i2c_slavetop这个IP核,想把下图红框中位宽修改为8bit,则先修改后保存;二、在Qsys中找到IP核,右键选择edit,在弹出的窗口中选中IP核并点击Analyze Sythesis Files,如下图所示三、点击Generate再重启Qsys,可以看到IP核中对应的地址位宽被改为8bit四、备注调用IP核时可以..原创 2021-09-08 10:05:41 · 2377 阅读 · 0 评论 -
quartus 18.1生成jic文件方法之二
step 1:生成镜像文件编译quartus工程得到sof文件,build nios工程得到elf文件;step 2:利用镜像文件生成hex文件原理为,将sof文件转为hw.flash文件,将elf文件转为sw.flash文件;将sw.flash文件粘贴到hw.flash后,合成一个hw_sw.flash文件;将hw_sw.flash文件转换为hw_sw.hex文件;辅以小工具的操作方法为, 打开工具,点击“文件”,分别选择sof和elf文件,然后点击“开始转换”;此...原创 2021-07-20 16:32:17 · 891 阅读 · 0 评论 -
Quartus 18.1生成*.jic文件的方法之一
*.jic文件是quartus工程的比特流文件,用以烧写到FPGA的flash中。其生成的步骤如下:step1:将nios程序生成hex文件:右键SW工程,选择“Make_targets”后的“Build...”,在弹出的窗口中选择“mem_init_generate”此时在nios工程目录下的mem_init文件夹中会生成hex文件step 2:利用quartus编译器生成jic文件:在quartus编译器中选择“File”下的“Convert Programming Fil.原创 2021-07-20 15:50:56 · 2099 阅读 · 3 评论 -
No Nios II target connection paths were located. Check connections and that a Nios II .sof is
1. phenomenon: Try to download firmware to flash by Flash Programmer in Nios II, add .sof and .elf file and start . It cannot work when next timepowered on. .sof file can be downloaded by quartus programmer, but the target connection in nios ca...原创 2021-07-17 11:56:40 · 1645 阅读 · 0 评论 -
Libero的奇葩报错之The width and depth settings are invalid
一、 Libero版本11.8,报错如图:从图中可以看到,位宽与深度的设置并无问题,此报错内容纯属编译器bug。二、 原因:那么编译器为什么会报错呢?其实是因为工程有其他的异常,本示例中的异常如下图:可用的cluster个数为2308,工程需要用到的个数为2320,因此编译器无法布局布线。在这个前提下,再去修改或者新建FIFO,编译器就会报错。就好比有一件事让对象不开心你不哄好,再做其他对的事情也会被找茬。三、应对:查找工程中是否有无效的模块并将之删除。或者更换资源更大.原创 2021-04-21 09:33:45 · 418 阅读 · 0 评论 -
基于microsemi的时域约束
当机芯在低温下输出图像异常,且判断原因为FPGA布局布线局限性时,区域约束并不总是奏效,因此考虑时序约束。双击“timing constraints”,在新窗口中发现有警告项目,双击它,则右边显示出所有风险项目。逐个添加约束。注意这些时钟的参考时钟也需要被约束,约束成功之后如下:通过区域约束可以使得模块尽可能与管脚靠近,时域约束可以是时钟尽可能准确。但实际效果并不总是如意。...原创 2021-03-24 10:59:07 · 237 阅读 · 0 评论 -
Net GND_tri (in view: work.flash(verilog)) has multiple drivers
问题:使用Libero时,每个模块单独检查语法结果都是successful,但是综合过程总是报错:Net GND_tri (in view: work.flash(verilog)) has multiple drivers。原因:关键词是multiple drivers。同一个变量,在不同的always 或者assign中被赋值,造成冲突。这在Verilog语言中是不被允许的。尤其是在复制一段代码之后,漏掉要修改的变量名,很容易导致这个问题。解决方法:检查代码,将重复赋值的变量都修正即原创 2020-11-12 09:32:17 · 2359 阅读 · 0 评论 -
Port ‘*‘ not found in the connected module(9th connection)
问题:在进行modelsim仿真某单个文件时,出现报错:从图像来看,原因是寻址的路径不对。testbench中实例化的对象模块在E盘中,但寻址路径却在F盘。如果跳过报错仿真,会发现实例化的对象模块中的参数,与目标模块的参数不同。解决办法:第一步:关闭工程;第二步:在工程目录中,删除simulation和stimulus两个文件夹;第三部:重新打开工程,新建testbench并仿真;...原创 2020-11-05 16:31:29 · 2982 阅读 · 0 评论 -
GoWin无法选择烧写程序:*.fs Invalid。
新建一个高云的FPGA工程,烧写程序时出现以下报错:原因:在新建工程时选择的器件与实际使用器件不一致。解决方法:单纯修改器件并不能解决问题,在调用的IP核(比如PLL)中也有器件信息,需要全部修改。...原创 2020-09-23 19:21:42 · 801 阅读 · 0 评论 -
modelsim : module is not defined
问题:在使用modelsim对基于GW FPGA项目的仿真时,报错:module is not defined。提到的模块往往是调用的IP核中定义的模块。原因:未添加prim_sim库。解决:将preim_sim.v文件添加到仿真工程中,并编译,再仿真即可。...原创 2020-06-17 19:44:16 · 7154 阅读 · 0 评论 -
GoWin使用Gao仿真无法抓取IO口信号
原因:IO口信号不是register,GW的芯片暂不支持在使用GAO仿真的时候抓取到IO口信号。应对方法:综合右键 》布局布线 》 not place register to IOB 后面的值改为true。仿真之后需要将其值改回为false。...原创 2020-06-17 19:38:20 · 459 阅读 · 0 评论 -
can not be placed according to constraint,because the constraint location is a dedicated pin
waring/error:INS_OBUF can't be placed according to constraint,because the constraint location is a dedicated pin.why it happens:use mspi pin as gpio pin, other configuration is needed.how to deal with it:原创 2020-06-17 19:36:01 · 1291 阅读 · 0 评论 -
notes for IS66WVC4M16EALL-7010BLI
存储器型号: IS66WVC4M16EALL-7010BLIBCR寄存器 输入时钟频率不同,需要设置不同的BCR寄存器的值:逻辑代码思路1. 用计数器将地址分段,比如每个通道占据两段或者三段,合起来为一行数据;2. 用fifo将输入信号转变为适配计数器频率的信号。当计数器到相应通道起始位置前时,如果是写通道将对应的读使能置1,如果是读通道将对...原创 2020-06-10 15:45:19 · 204 阅读 · 0 评论 -
Port could not connect other instance except via a buf which should connect PAD.
背景:GW FPGA,想测试某信号,但该信号管脚不便飞线,且该信号不能被约束到其他管脚。因此考虑将该信号赋值给其他信号,通过其他信号的管脚飞线来测试信号。但报错:Port'I2C_SDA'couldnotconnectotherinstanceexceptviaabufwhichshouldconnectPAD.原因:目标信号为调用IP核的输出信号,该信号实例化时已经经过了buffer,直接到了PAD,因此无法将该信号赋值给其他变量;解决办法:暂未找到,...原创 2020-05-18 14:49:51 · 570 阅读 · 6 评论 -
attempting to use alternate WLF file
问题:modelsim运行*.do文件时出现警告,不能打开vsim.wlf文件,或者说vsim.wlf文件被占用,使用替代文件:原因:vsim.wlf文件被其他进程占用解决:删除vsim.wlf文件,重新编译生成vsim.wlf文件。更多细节,可扫码交流...原创 2020-05-11 15:03:02 · 232 阅读 · 0 评论 -
failed to find 'GSR' in hierarchical name '/GSR/GSR0'.
问题:modelsim 仿真时,报错failed to find 'GSR' in hierarchical name '/GSR/GSR0'.如下图:原因:对于GW的工程,需要在仿真文件中加入一行语句:GSR GSR(.GSRI(1'b1));如下图:有了此句之后,再运行 *.do文件,即可出仿真波形。更多细节,可扫码交流:...原创 2020-05-09 18:13:27 · 2752 阅读 · 1 评论 -
Missing instance name in instantiation of '*'.
modelsim仿真时报错,如下:原因:对着提示进入tb.v文件查看,发现语法错误:对策:添加上图中红色框的内容,即可。至于为何报错在line 96,实际修改的地方在line 69呢?因为这个模块调用,在line 96结束,该模块内的错误,都会在line 96有报错。更多详情,可扫码交流:...原创 2020-05-09 18:04:10 · 4125 阅读 · 0 评论 -
GoWin的ModelSim仿真
一、安装独立的modelsim 之前用MicroSemi中的modelsim,理论上可行,但未能实现。在新的路径下单独安装modelsim,操作可以大大简化。二、编写testbench MicroSemi中可以指定文件编写testbench,平台会初始化testbench的框架。GoWin的平台需要新建一个*.v文件作为testbench。具体操作为...原创 2020-05-06 19:52:40 · 3472 阅读 · 3 评论 -
port name doesn't exist in the netlist or is not connected to an IoCell macro at PDC Line
问题描述:在io.pdc文件中约束了这些管脚,并且引入到模块中,管脚名称都能用上,但编译时Libero报错。原因分析:输入的信号,如果最终未能生成有效数据输出,或者未参与生成有效数据,那么该信号在综合时会被编译器自动优化(删除),因此编译时报错。尤其是输入的时钟信号,仅仅作为fifo的写时钟,也会导致该错误发生,需要将其直接或者间接输出;解决方法:检查逻辑代码,...原创 2019-12-07 09:59:23 · 1765 阅读 · 1 评论 -
the logic for * does not match the standard of flip-flop
问题描述:Libero综合时报错,如下原因分析:尽管报错提到的是row_cnt这个变量,但原因在于另一个变量 rst_n :在该always块中,设置了rst_n信号的下降沿触发,但并没有用到该信号。原本用在“counts_rst”的位置,调试过程中被“counts_rst”替换掉。解决方法:既然没有用到rst_n触发,此always块中将“or neg...原创 2019-12-06 19:50:52 · 3435 阅读 · 0 评论 -
modelsim报错:Modelsim/win32acoem/vlog failed
现象:报错在Libero平台使用modelsim仿真时,对目标文件和仿真文件分别进行“check HDL file”都显示无语法错误,但运行仿真文件时报错: Error:D/Microsemi/Libero_SoC_v11.8/Modelsim/win32acoem/vlog failed.分析:乍一看红色字体似乎没有详细说错误原因,但在其上文中(红色框中)有详细说明:...原创 2019-12-06 09:54:14 · 12533 阅读 · 1 评论 -
ERROR: Could not find a device which is programmed with an instrumented design:
identify debug过程中报错:ERROR: Could not find a device which is programmed with an instrumented design:Device is not instrumented or hardware communication failure解决过程:为了可以使得仿真的深度更深(想要将FPGA memory...原创 2019-11-30 10:19:03 · 620 阅读 · 0 评论 -
基于Libero的FPGA后仿真步骤
step 1. right click "synthesize", click "open interactively";step 2. after the "synplify pro L" window appeared, right click "synthesis" under "project files" ,click "new identify implementat...原创 2019-10-12 18:35:47 · 2747 阅读 · 3 评论 -
基于Libero的FPGA区域约束
区域约束的主要目的是关联耦合逻辑,减少后续布线压力,加大资源利用率;约束约束对改善时序的贡献很小,紧的约束(约束面积小)甚至有恶化时序的可能。笔者在microsemi的FPGA芯片项目中,有通过添加区域约束改善时序的实例。microsemi的约束方法如下:1. 在Desigh Flow中双击Edit Constraints下的Chip Planner,打开如下窗口,左侧窗口显示的是项目中的...原创 2019-08-30 19:44:24 · 1502 阅读 · 0 评论 -
Libero管脚约束后编译报错
1. FPGA,Libero11.8,编写io.pdc文件,之后可以通过synthesize,但是compile失败;2. "error: pdc-13: illegal or invalid assignment to package pin at pdc line";//可能是因为管脚的驱动电平选择出错,见如下代码:set_io dv_clk \ -pi...原创 2019-08-20 19:22:13 · 2866 阅读 · 0 评论 -
Verilog中的generate语句
generate //generate 语句开始genvar gv_i; // 通过genvar关键字声明一个循环变量 for(gv_i = 0;gv_i < FIL_WIDTH;gv_i = gv_i + 1) //循环条件 begin:databuf // for语句后必须有begin和end,且begin后接一个名字 alway...原创 2019-07-13 16:04:33 · 350 阅读 · 0 评论