ISE&modelsim联合仿真教程

上传人:206****923 文档编号:91848712 上传时间:2019-07-02 格式:DOCX 页数:21 大小:1.81MB
返回 下载 相关 举报
ISE&modelsim联合仿真教程_第1页
第1页 / 共21页
ISE&modelsim联合仿真教程_第2页
第2页 / 共21页
ISE&modelsim联合仿真教程_第3页
第3页 / 共21页
ISE&modelsim联合仿真教程_第4页
第4页 / 共21页
ISE&modelsim联合仿真教程_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《ISE&modelsim联合仿真教程》由会员分享,可在线阅读,更多相关《ISE&modelsim联合仿真教程(21页珍藏版)》请在金锄头文库上搜索。

1、ISE、modelsim联合教程一、ISE的使用1、建立工程:A、点击File,然后New projectB、输入工程名和工程文件夹所在位置,那个Working Directory不用动,它会自动跟Location变化的(PS:工程名一定要用英文,存放工程的文件夹也一定要放在英文目录下,否则编译会出问题,这一点非常重要!)C、设定芯片类型什么的,点击Next,点击Finish就行了(PS:这里什么都不用修改,因为芯片类型啥的都可以在后面随时进行修改的)2、给工程添加文件:A、鼠标右击工程图标下面的芯片图标,选择New source,当您想往该工程中添加文件的时候选择下面的Add source(

2、PS:一个工程下可以有多个文件)B、选择新建的文件类型,这里我们选择verilog module,在右边输入文件名称就可以了,文件位置默认是在工程文件下下(PS:文件名跟工程名最好一样,否则在后面也可能出现奇怪的问题,当程序写完了,要用modelsim仿真的时候这里就要添加verilog text fixture文件了)C、设置程序的输入和输出端口,port name就是端口名称,如果该端口是输入端口就在direction中选择input,输出端口就选择output,如果该端口是总线的形式,就勾选上bus,在MSB中输入最高位,在LSB中输入最低位,比如是8位宽的总线,则在MSB中写7,LSB

3、中写0(PS:这里我用一个之前写的小程序举例子,一个并串转换器,输入有两路,一路是奇数1、3、5、7、9等,一路是偶数2、4、6、8、10等,然后让输出是1、2、3、4、5等,这里我将采取调用IP核的方式,IP核就是ISE封装好的器件,就跟matlab 的内置函数差不多,我们设定好它的参数后直接例化调用它就好了,就不用再自己写了)设置好后点击Next,然后点击Finish即可从这里我们可以看到,刚才设置的参数ISE已经帮我们设置好了,接下来我们开始调用IP核D、调用IP核,右击practice文件名,选择new source(PS:因为IP核是隶属于verilog文件的,所以要在文件中添加IP

4、核,这里的隶属关系一定要搞懂!)选择那个大灯泡,就是IP核了,同样只需要起名字就行了,不用管位置,名字最好用文件名加个ipcore后缀我们在这个例子中是想用两个fifo来不断的存储和输出数据,通过时钟和读写使能控制fifo实现并串转换,所以我们应该选择fifo的IP核,然后点击next不要点击generate因为我们还有好多参数要设定这里选择读写不同时钟这里选择读写深度和读写位宽然后这里选择读满、写满等乱七八糟的东西的标志(PS:就是说这个fifo快被写满的时候就会有一个输出端口被拉高或拉低,这里根据个人需求设定,我没有用到就没有勾选)然后选择复位方式然后选择是否使用输出、输入计数端口(就是说

5、要不要用端口来记进入和输出fifo的数据的个数,我们这个例子中并不需要记个数,所以不用勾选),然后点击generate就行了E、例化IP核,找到IP核所在的文件夹,点击左上角的打开按钮找到刚刚设定的IP核名称后缀为.v的文件(我这里是用我之前的文件了,所以是p2s_ipcore.v,如果您按照上述步骤操作这里应该会找到practice_ipcore.v)在该文件中找到下面图中的一段程序把这一段复制到之前创建的主文件中,就是practice.v的文件中的这个位置(在下图),我们发现p2s_ipcore后面多出了一个ipcore1,这个是我们在主程序中给ip核起的名字,就是说,刚才我们在创建ip核

6、时给ip核起的名字是这个ip核在系统中的名字而不是在我们将要编程的文件中的名字,就像在学校别人都叫我们大名,但是在家里父母叫我们小名一样,然后我们也发现上图中的端口名称在下图中也被我们替换掉了,因为我们要给这个fifo输入,并控制它的输出,上图中的端口名只是告诉我们这些端口都是做什么作用,我们肯定是要用我们定义的端口来替换它的,对于不用的端口悬空就行了,比如empty端口我们就没用,悬空就行了,在下图中我们直接把empty删掉了,但是逗号千万不能删,这里有点难理解,您不懂的地方可以随时问我。下面的ipcore2跟上面这个是一个意思,因为我们这个程序用到了2个fifo所以只需要创建一个fifo的

7、ip核,然后调用2次就可以了老师请您注意下图中画圈的部分中我又定义了两种类型的变量wire型和reg型,它们不同于之前我们建立文件时设定的端口类型,wire是内部连线(就是内部模块间通信用的,注意是内部模块间,wire型不能用作整个系统的输入和输出,整个系统的输入和输出只能是input和output型),reg是寄存器类型(用于临时存储数据)F、下面我们来编写主函数,我先把图贴上然后再进行说明Verilog程序跟C和matlab最大的不同就在于它需要驱动,就是第一句,也就是always那一句,意思是每当检测到clock_2或者rst的上升沿执行下列程序,由此也可以看出来verilog程序必须由

8、时钟或者复位信号来驱动,我们发现程序中多用的是“=”而不用等号,=号是立即赋值(阻塞模式),而=是(非阻塞模式)等begin end之间这一小段程序运行完再统一赋值,反正一般在时序电路中要用非阻塞模式赋值,这里您不懂的话只需百度“verilog阻塞与非阻塞赋值就清楚了”至于这段程序的意思想必您也知道了rd_en1是第一个fifo的读使能,rd_en2是第二个fifo的读使能,到这里您可能会疑惑为什么这里没有输入,因为verilog程序我们只需要关心模块的内部连接和时序,输入是外部给的,在仿真的时候我们会自己写输入脚本,所以这里并不关心输入。G、好了程序写完了,下面我们开始进行编译、综合、布线。

9、双击synthesize-XST按钮编译完成后问号会变成感叹号,当然这是在没有错误的条件下,warning不用管,但是如果编译没成功记得点击error查看原因二、使用modelsim对编写的程序进行仿真调试1、新建测试文件,如下图所示:选择下图的文件,起名字时一般都是_test接下来一定要选择主文件,不要选错了ip核,因为是要对主文件进行仿真之后点击simulation,然后p2s_test就会看到已经建立好的文件2、编写测试脚本,先上图然后再进行说明前两句是在编写时钟,每隔10个单位时间clock_1翻转一次,每隔5个单位时间clock_2翻转一次,也就是说clock_2的频率为1的2倍,clock_1是写时钟,clock_2是读时钟,读时钟必然要快于写时钟。Always(posedge clock_1)是在编写输入数据,always结构和下面的initial结构最大的不同就在于,always只要检测到后面的条件就执行,但是initial只执行一次。在编写测试脚本的时候就不需要用=直接用=就可以了。3、编写完成测试脚本后,运行modelsim进行波形观察,双击下图中的按钮就会看到下图的画面:然后点击下图中的图标,软件就会帮你把尺寸调到合适:至此,本教程就完结了,希望您使用愉快!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号