分享
分享赚钱 收藏 举报 版权申诉 / 22

类型ISE&modelsim联合仿真教程.doc

  • 上传人:精品资料
  • 文档编号:9762422
  • 上传时间:2019-09-02
  • 格式:DOC
  • 页数:22
  • 大小:1.85MB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    ISE&modelsim联合仿真教程.doc
    资源描述:

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

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

    3、输入最低位,比如是 8 位宽的总线,则在 MSB 中写 7,LSB 中写 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 核,右击

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

    5、是说这个 fifo 快被写满的时候就会有一个输出端口被拉高或拉低,这里根据个人需求设定,我没有用到就没有勾选)然后选择复位方式然后选择是否使用输出、输入计数端口(就是说要不要用端口来记进入和输出 fifo 的数据的个数,我们这个例子中并不需要记个数,所以不用勾选) ,然后点击 generate 就行了E、例化 IP 核,找到 IP 核所在的文件夹,点击左上角的打开按钮找到刚刚设定的 IP 核名称后缀为 .v 的文件(我这里是用我之前的文件了,所以是 p2s_ipcore.v,如果您按照上述步骤操作这里应该会找到 practice_ipcore.v)在该文件中找到下面图中的一段程序把这一段复制到

    6、之前创建的主文件中,就是 practice.v 的文件中的这个位置(在下图) ,我们发现 p2s_ipcore 后面多出了一个 ipcore1,这个是我们在主程序中给 ip 核起的名字,就是说,刚才我们在创建ip 核时给 ip 核起的名字是这个 ip 核在系统中的名字而不是在我们将要编程的文件中的名字,就像在学校别人都叫我们大名,但是在家里父母叫我们小名一样,然后我们也发现上图中的端口名称在下图中也被我们替换掉了,因为我们要给这个 fifo 输入,并控制它的输出,上图中的端口名只是告诉我们这些端口都是做什么作用,我们肯定是要用我们定义的端口来替换它的,对于不用的端口悬空就行了,比如 empty

    7、 端口我们就没用,悬空就行了,在下图中我们直接把 empty 删掉了,但是逗号千万不能删 ,这里有点难理解,您不懂的地方可以随时问我。下面的 ipcore2 跟上面这个是一个意思,因为我们这个程序用到了 2个 fifo 所以只需要创建一个 fifo 的 ip 核,然后调用 2 次就可以了老师请您注意下图中画圈的部分中我又定义了两种类型的变量 wire型和 reg 型,它们不同于之前我们建立文件时设定的端口类型,wire是内部连线(就是内部模块间通信用的,注意是内部模块间,wire型不能用作整个系统的输入和输出,整个系统的输入和输出只能是input 和 output 型) ,reg 是寄存器类型

    8、(用于临时存储数据)F、下面我们来编写主函数,我先把图贴上然后再进行说明Verilog 程序跟 C 和 matlab 最大的不同就在于它需要驱动,就是第一句,也就是 always 那一句,意思是每当检测到 clock_2 或者 rst 的上升沿执行下列程序,由此也可以看出来 verilog 程序必须由时钟或者复位信号来驱动,我们发现程序中多用的是“=”而不用等号,=号是立即赋值(阻塞模式) ,而=是(非阻塞模式)等 begin end 之间这一小段程序运行完再统一赋值,反正一般在时序电路中要用非阻塞模式赋值,这里您不懂的话只需百度“verilog 阻塞与非阻塞赋值就清楚了”至于这段程序的意思想

    9、必您也知道了 rd_en1 是第一个fifo 的读使能,rd_en2 是第二个 fifo 的读使能,到这里您可能会疑惑为什么这里没有输入,因为 verilog 程序我们只需要关心模块的内部连接和时序,输入是外部给的,在仿真的时候我们会自己写输入脚本,所以这里并不关心输入。G、好了程序写完了,下面我们开始进行编译、综合、布线。双击synthesize-XST 按钮编译完成后问号会变成感叹号,当然这是在没有错误的条件下,warning 不用管,但是如果编译没成功记得点击 error 查看原因二、使用 modelsim 对编写的程序进行仿真调试1、新建测试文件,如下图所示:选择下图的文件,起名字时一

    10、般都是_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 进行波形观察,双击下图中的按钮就会看到下图的画面:然后点击下图中的图标,软件就会帮你把尺寸调到合适:至此,本教程就完结了,希望您使用愉快!

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:ISE&modelsim联合仿真教程.doc
    链接地址:https://www.docduoduo.com/p-9762422.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开