零基础学FPGA(十六)前仿真全过程笔记(下篇)

来源:本站
导读:目前正在解读《零基础学FPGA(十六)前仿真全过程笔记(下篇)》的相关信息,《零基础学FPGA(十六)前仿真全过程笔记(下篇)》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《零基础学FPGA(十六)前仿真全过程笔记(下篇)》的详细说明。
简介:进入波形仿真后点击运行按钮即可出波形,下面我们来验证我们的cpu代码是否正确

大家先看两个图,等会小墨同学会结合这两个图给大家细细讲解仿真过程

零基础学FPGA(十六)前仿真全过程笔记(下篇)

零基础学FPGA(十六)前仿真全过程笔记(下篇)

零基础学FPGA(十六)前仿真全过程笔记(下篇)

我们先来看第一个过程

零基础学FPGA(十六)前仿真全过程笔记(下篇)

上电后,cpu先从ROM中读回两个周期的数据,是从ROM的0地址开始的,再对比我们之前定义好的ROM,数据读取正确,读回的数据的前三位是111,即指令码JMP,后13位003c为地址码,JMP指令是将读回的数据作为新的地址码来读取相应地址的数据。那么,下一步,cpu应该是从ROM的003c地址处读数据才对,再看一下波形

零基础学FPGA(十六)前仿真全过程笔记(下篇)

对比波形后可知,cpu正好是从003c处读取数据,读到的数据指令码位111即JMP,地址码位0006,再到ROM的0006地址处看

零基础学FPGA(十六)前仿真全过程笔记(下篇)

这次读回的指令码位101,即LDA,也就是说将后13位地址码对应的RAM中的数据读回,送到累加器中,想一下,这时的RAM应该是打开的,而且双向输入输出口的数据总线上应该是来自RAM的8位数据,由于ROM0006地址处的地址码为1800是13位的,而RAM的地址是9位的,因此实际上我们从RAM中读回的数据是从RAM的0地址读回的,即我们之前给RAM写好的0000_0000,再看一下波形

本文引用地址:http://www.eepw.com.cn/article/270619.htm

零基础学FPGA(十六)前仿真全过程笔记(下篇)

正如我们所想的一样,数据总线上是0000_0000,RAM是打开的,地址为1800

就这样,读者可以自己再试一下,看看我们的cpu是不是按照我们之前给他的程序运行的,在这里我就不再给大家一一介绍了

虽然波形仿真很直观,但是看久了就会令人眼花缭乱,尤其是数据很多的时候,我们只能看其中一部分,不能讲所有数据看完整,这时候我们单单是用波形来仿真就远远不够了,下面介绍用系统任务仿真的过程

再回到我们的代码,还记得小墨同学注释掉了一些代码吧,我们把那些代码给加上

我以其中一个过程为例

零基础学FPGA(十六)前仿真全过程笔记(下篇)

假设读回的指令码位101,即LDA,如果我在fentch_8的高电平期间且在cpu输出地址为奇数的时候记录一下此时的时间、指令、地址、目的地址、数据的话就可以不用看波形,让电脑来帮助我们来分析了,因此作如下处理

零基础学FPGA(十六)前仿真全过程笔记(下篇)

这里我延时60ns,是因为第一次记录的时候数据总线上还没有数据,只有延时一会才会有数据,即上面那张波形图右边那根黄色的线处记录一下数据,并将其显示。我们也可以加上一下标注,来帮助我们观察

这样我们再来仿真的时候就不用看波形了,直接打开transcript一栏观察记录即可

零基础学FPGA(十六)前仿真全过程笔记(下篇)

提醒:《零基础学FPGA(十六)前仿真全过程笔记(下篇)》最后刷新时间 2024-03-14 00:55:37,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《零基础学FPGA(十六)前仿真全过程笔记(下篇)》该内容的真实性请自行鉴别。