导航:首页 > 源码编译 > vhdl编译成功仿真不出来

vhdl编译成功仿真不出来

发布时间:2022-08-22 17:25:18

❶ vhdl编程中遇到编译的问题,各模块仿真成功,顶层设计出错,求高手指点,有哪些常出错点

就表面看报错提示的很清楚,你有一些变量调用错名了,导致编译认为你没定义。(如变量d)--> u1:adc_state port map (datain(7 downto 0)=>d(7 downto 0)。
而实际的错误确是,你的元件例化语法使用错了。你的子元件和顶层元件端口书写前后反了;应改为:
u1:adc_state port map (d(7 downto 0)=>datain(7 downto 0) ……后边同理。
改改试试吧!

❷ VHDL模块做出来了,整体为什么不能仿真出结果

太难了,我不懂

❸ 请问写好一个VHDL程序后,怎么样一步步到仿真

写好后存盘

一 将设计项目设置成工程文件(PROJECT)
为了对输入的设计项目进行各项处理,必须将设计文件,设置成Project。如果设计项目由多个设计文件组成,则应该将它们的主文件,即顶层文件设置成Project。如果要对其中某一底层文件进行单独编译、仿真和测试,也必须首先将其设置成Projcet。即需要对哪个设计项目进行编译、仿真等操作时,就设定哪个项目为工程。
将设计项目(如h_adder.gdf)设定为工程文件,有两个途径:
1、执行菜单File  Project  Set Project to Current File,即将当前设计文件设置成Project。选择此项后可以看到菜单上面的标题栏显示出所设文件的路径。(前一部分是目前编译器所指向的工程文件名称)。这点特别重要,此后的设计应该特别关注此路径的指向是否正确!如果已经指向待编译的文件,就不必再次设置为工程。
2、如果设计文件未打开,执行菜单File  Project  Name,然后在跳出的Project Name窗中找到文件夹及文件名,此时即选定此文件为本次设计的工程文件了。
步骤4:选择目标器件并编译
在对文件编译前必须选定最后实现本设计项目的目标器件,执行菜单AssignDevice,弹出Device窗口。此窗口的Device Family是器件序列栏,应该首先在此拦中选定目标器件对应的序列名,如EPM7128S对应的是MAX7000S系列、EPF10K10对应的是FLEX10K、EP1K30对应的是ACEXlK系列等。为了选择EPF10K10LC84-4器件,应将此栏下方标有Show only Fastest Speed Grades的勾消去,以便显示出所有速度级别的器件。完成器件选择后,按OK键。
启动编译器。首先选择左上角菜单的MAX+plusII选项,在其下拉菜单中选择编译器项Compiler,此编译器的功能包括网表文件提取、设计文件排错、逻辑综合、逻辑分配、适配(结构综合)、时序仿真文件提取和编程下载文件装配等。如图5所示。
点击Start,开始编译!如果发现有错,一般情况下,会告诉用户错误的位置和情况,双击编译信息(Messages -Compiler)窗错误信息条,会直接跳到错误位置,排除错误后再次编译。
说明:错误位置是用元件左下部的浅色数字显示的,该数字是用户在Enter Symbol的时候自动顺序编号的。

图5 编译窗口
图5编译窗各功能项目块含义如下:
• Compiler Netlist Extractor :编译器网表文件提取器,该功能块将输入的原理图文件或HDL文本文件转化成网表文件并检查其中可能的错误。该模块还负责连接顶层设计中的多层次设计文件;此外还包含一个内置的,用于接受外部标准网表文件的阅读器。
• Database Builder :基本编译文件建立器,该功能块将含有任何层次的设计网表文件转化成一个单一层次的网表文件,以便进行逻辑综合。
• Logic Synthesizer :逻辑综合器,对设计项目进行逻辑化简、逻辑优化和检查逻辑错误。综合后输出的网表文件表达了设计项目中底层逻辑元件最基本的连接方式和逻辑关系。逻辑综合器的工作方式和优化方案可以通过一些选项来实现。
• Partitioner :逻辑分割器,如果选定的目标器件逻辑资源过小,而设计项目较大,该分割器则自动将设计项目进行分割,使得它们能够实现在多个选定的器件中。
• Fitter :适配器,适配器也称结构综合器或布线布局器。它将逻辑综合所得的网表文件,即底层逻辑元件的基本连接关系,在选定的目标器件中具体实现。对于布线布局的策略和优化方式也可以通过设置一些选项来改变和实现。
• Timing SNF Extractor :时序仿真网表文件提取器,该功能块从适配器输出的文件中提取时序仿真网表文件,留待对设计项目进行仿真测试用。对于大的设计项目一般先进行功能仿真,方法是在Compiler窗口下选择Processing项中的Functional SNF Extractor功能仿真网表文件提取器选项。
• Assembler :装配器,该功能块将适配器输出的文件,根据不同的目标器件,不同的配置ROM产生多种格式的编程/配置文件,如用于CPLD或配置ROM用的POF编程文件(编程目标文件);用于对FPGA直接配置的SOF文件(SRAM目标文件);可用于单片机对FPGA配置的Hex文件,以及其它TTFs、Jam、JBC和JEDEC文件等。
步骤5:时序仿真
接下来应该测试设计项目的正确性,即逻辑仿真,简单的说仿真就是人为模拟输入信号,观察输出信号的变化,判断是否合乎预计的设计要求。具体步骤如下:
1、建立波形文件。按照以上“步骤2”,为此设计建立一个波形测试文件。选择File项及其New,再选择图1下侧New窗中的Waveform Editer..项,打开波形编辑窗。如图6所示。

图6 波形编辑窗口
2、输入信号节点。执行菜单Node → Enter Nodes from SNF。在弹出的窗口(图7)中首先点击List键,这时左窗口将列出该项设计所有信号节点。由于设计者有时只需要观察其中部分信号的波形,因此要利用中间的“=>”键将需要观察的信号选到右栏中,然后点击OK键即可。波形编辑窗口变成图8所示。

图7 列出并选择需要观察的信号节点
3、设置波形参量。图8所示的波形编辑窗中已经调入了半加器的所有节点信号,在为编辑窗的半加器输入信号a和b设定必要的测试电平之前,首先设定相关的仿真参数。如图8所示, 在Options选项中消去网格对齐Snap to Grid的选择(消去勾),以便能够任意设置输入电平位置,或设置输入时钟信号的周期。这点切记

图8 调入所有节点后的图形编辑窗口
4、设定仿真时间宽度。执行菜单File→End Time选项,在End time选择窗中选择适当的仿真时间域,如可选3s(3微秒),以便有足够长的观察时间,但是不要设定时间太长,否则,仿真工作量大,占用的机时太长。软件默认仿真时间为1s。
5、设定输入信号。现在可以为输入信号a和b设定测试电平了。如图9标出的那样,利用必要的功能键为a和b加上适当的电平,以便仿真后能测试so和co输出信号。如果需要对输入信号a在某段时间间隔内赋值,在该信号的该段时间起点拖动鼠标,移动到该段时间终点,使之变成黑色,然后点击左侧工具箱中的相应赋值按键。如果对信号从头至尾(End Time)赋值,只需用鼠标在左部的Name区点击相应的位置,该信号会全部变黑,表示全选。

图9 设定输入信号的测试电平
赋值取反:就是对“黑色”时间段的信号取反码,如:0→1、1→0、B9→46
6、波形文件存盘。执行菜单File →Save,按OK键即可。由于存盘窗中的波形文件名是默认的(这里是h_adder.scf),所以直接存盘即可。
7、运行仿真器。执行菜单MAX+plusII →Simulator选项,点击跳出的仿真器窗口(图10)中的Start键。图11是仿真运算完成后的时序波形。如果没有变化,看看是否因为显示比例太大,点击图9的放大按钮或显示全部按钮。

图10 仿真器窗口

图11 半加器仿真波形
上图的Value栏的数值,代表竖线处(83.0ns)各个信号的电平。
8、观察分析波形。很明显,图11显示的半加器的时序波形是正确的。还可以进一步了解信号的延时情况。图11的竖线是测试参考线,它上方(与Ref数据框处相同)标出的83.0ns是此线所在的位置;鼠标箭头(该线右侧‘+’处)所在处时间显示在Time数据框里,为93.0ns;二者的时间差显示在窗口上方的Interval小窗中。由图可见输入与输出波形间有一个小的延时量10ns。
有时,为了观察方便需要将某些信号作为一组来观测。步骤:
①. 鼠标在Name区选择co使之全部变黑,按住ALT键,向下拖动鼠标,复制一个co,或者全黑后,右键→Copy,在其它空白区域再右键→Paste;然后再复制一个so;或者菜单Node → Enter Nodes from SNF,再加上一个co和so。建议co在so的上面,且二者相邻。
②. 将鼠标移动到Name的co上(不要在带红线的“信号性质说明”上),按下鼠标左键并向下拖动鼠标至so,松开后鼠标左键,可选中信号co、so
③. 在选中区域(黑色)上,点击鼠标右键,在浮动菜单上选择Enter Group...或直接执行菜单Node → Enter Group...,出现如图12所示的设置组对话框

图12 设置组对话框
④. 选择合适进制后,选择OK,可得到如图13所示的波形图。

图13 组显示结果(10进制)
说明:在以后的仿真时,对于多位的数据,双击Value区,也可以改变数据的显示格式,可以直观显示。步骤①不一定是必须的。但是Group的高位是所选数据的最上面的那个,低位是所选数据的最下面的那个。输入数据也可以编组,有时在信号赋值时比较方便。
9、为了精确测量半加器输入与输出波形间的延时量,可打开时序分析器,方法是选择左上角的MAX+plusII项及其中的Timing Analyzer选项,点击跳出的分析器窗口(图14)中的Start键,延时信息即刻显示在图表中。其中左排的列表是输入信号,上排列出输出信号,中间是对应的延时量,这个延时量是精确针对EPF10K10LC84-4器件的。

图14 延时分析结果
10、包装元件入库。重新回到半加器设计文件h_adder.gdf,执行菜单File → Create Default Symbol项,此时即将当前文件变成了一个包装好的单一元件h_adder.sym,并被放置在工程路径指定的目录(e:\MYNAME\shiyan_1)中,以备后用。

❹ vhdl仿真出现的问题

原因:如果只需要进行功能仿真,不全编译也是可以进行下去的,但时序仿真就必须进行全编译(即工具栏上的紫色实心三角符号那项)。全仿真包括四个模块:综合器(Synthesis)、电路装配器(Fitter)、组装器(Assember)和时序分析器(Timing Analyzer),任务窗格中会有成功标志(对号)。

❺ VHDL语言编写的程序可以通过编译。可是仿真的输出总是0.谁可以摊点我一下。

else
shuchu:=shuchu+chenshu_a;
beichenshu_b(6 downto 0):=beichenshu_b(7 downto 1);
beichenshu_b(7):='0';
chenshu_a(7 downto 1):=chenshu_a(6 downto 0);
chenshu_a(0):='0';
把 shuchu:=shuchu+chenshu_a;这一句删除试试

但 是你的算法还是有问题,chenshu_a是应该左移,但它的位数要扩展而不是原来 的8位,你的写法将chenshu_a的最高位丢掉了,会造成结果完全不对
个人看法而已,没有试过,我这里没有那个软件

❻ 同样vhdl问题,综合成功但是没有仿真结果

看你说的不是仿真 是fpga验证

没结果是什么意思 不是对就是错 怎么没结果呢
怎么保证引脚没有问题
前一个模块是什么

xuliej是顶层文件还是它的一部分

复位输入是怎么做的

❼ vhdl仿真不了

我的是8.1,程序可以用,创建VHDL文件,保存,最好存为shili2之后file->new project wizard第一行是保存目录,第二三行是工程名,最好还用shili2,然后next,下一页点add左边找出保存的vhdl文件然后add,之后next,然后选元件,之后next,下一页用默认的quartus2自带工具就直接next,然后finish,之后默认的窗口左边有compile design,展开之后下边第一项双击就能预编译,之后生成报告文件,之后添加管脚信息,选择最上一行的assignment->assignment editor打开的窗口第一行能选择管脚类型,鼠标在下边的表格中双击可以在下拉菜单中找到要选择地管脚,我在第一行长选择了all,双击第一列的表格插入程序中用到的管脚,关闭管脚选择的对话框并保存修改,之后重新编译通过后新建vector waveform file ,之后在最上方edit->end time在最上边time选项设定一个时间值,然后ok,新建的波形文件中左边区域单击右键选insert->insert node or bus,type可选input或其他,radix也可以改,之后选node finder然后选list,要用的管脚加到右边,中间的四个按钮选择添加或删除管脚,之后右上方ok,单击左边的管脚使之变为蓝色,然后点击左边小时钟的图标设置input管脚的信息,然后file->save,之后assignment->setting一般在simulation setting把simulation mode 改为functional就ok了,之后processing->generate function simulator net list,产生网表文件后processing->start simulator 波形应该可以自动显示出来

❽ quartus ii 原理图部分我是用的VHDL和原理图相结合编译也都成功了,就是波形仿真添加节点会出现问题!!!

说实话,我也遇到过此类问题,当初是把已经建立的波形仿真文件删除(从工程里面剔除,若有多个,记得删干净),重新搞一个!
波形仿真文件不是有扩展名吗,确定工程文件夹里面没有了那扩展名的文件为止!

阅读全文

与vhdl编译成功仿真不出来相关的资料

热点内容
日本安卓系统和中国有什么区别 浏览:134
linux命令行修改文件 浏览:836
从编译和解释的角度看 浏览:647
徐志摩pdf 浏览:649
夏天解压球视频 浏览:302
全封闭压缩机qd91h 浏览:666
如何在我的世界免费开一个服务器 浏览:327
python时间对比 浏览:120
单片机模块化编程教学 浏览:344
打开pdf格式 浏览:733
跑显存命令 浏览:120
windows下编译python 浏览:609
linux蓝牙连接 浏览:900
安卓qq邮箱格式怎么写 浏览:431
如何电信租用服务器吗 浏览:188
编程中计算根号的思维 浏览:183
可爱的程序员16集背景音乐 浏览:448
软件代码内容转换加密 浏览:797
什么app看电视不要钱的 浏览:16
乌班图怎么安装c语言编译器 浏览:280