大家好,又见面了,我是你们的朋友全栈君。
1、实验步骤:
A、指令计数器PC:
1个vhd文件,用来定义顶层实体
1个vwf文件,用来进行波形仿真,将验证的波形输入
1、新建,编写源代码。
(1).选择保存项和芯片类型:【File】-【new project wizard】-【next】(设置文件路径+设置project name为【C:\Users\lenovo\Desktop\笔记\大二上\数字电路\实验课\实验四\PC】)-【next】(设置文件名【junmo】)-【next】(设置芯片类型为【cyclone-EP1CT144C8】)-【finish】
(2).新建:【file】-【new】(【design file-VHDL file】)-【OK】
2、写好源代码,保存文件(junmo.vhd)。
3、编译与调试。确定源代码文件为当前工程文件,点击【processing】-【start compilation】进行文件编译。编译结果有一个警告,文件编译成功。
4、波形仿真及验证。新建一个vector waveform file。按照程序所述插入clock、ld_pc,in_pc,input,output五个节点(clock,ld_pc,in_pc,input为输入节点,output为输出节点)。(操作为:右击 -【insert】-【insert node or bus】-【node finder】(pins=all;【list】)-【>>】-【ok】-【ok】)。任意设置clock,ld_pc,in_pc,input的输入波形…点击保存按钮保存。(操作为:点击name(如:clock))-右击-【value】-【count】(如设置binary;start value=0;end value=1;count every=10ns),同理设置name ld_pc,in_pc,input(如0,1,5),保存)。然后【start simulation】,出name output的输出图。
5、功能仿真,即没有延迟的仿真,仅用来检测思路是否正确。
B、寄存器:
1个vhd文件,用来定义顶层实体
1个vwf文件,用来进行波形仿真,将验证的波形输入
1、新建,编写源代码。
(1).选择保存项和芯片类型:【File】-【new project wizard】-【next】(设置文件路径+设置project name为【C:\Users\lenovo\Desktop\笔记\大二上\数字电路\实验课\实验四\寄存器】)-【next】(设置文件名【junmo】)-【next】(设置芯片类型为【cyclone-EP1CT144C8】)-【finish】
(2).新建:【file】-【new】(【design file-VHDL file】)-【OK】
2、写好源代码,保存文件(junmo.vhd)。
3、编译与调试。确定源代码文件为当前工程文件,点击【processing】-【start compilation】进行文件编译。编译结果有一个警告,文件编译成功。
4、波形仿真及验证。新建一个vector waveform file。按照程序所述插入clock,ld,input,output四个节点(clock,ld,input为输入节点,output为输出节点)。(操作为:右击 -【insert】-【insert node or bus】-【node finder】(pins=all;【list】)-【>>】-【ok】-【ok】)。任意设置clock,ld,input的输入波形…点击保存按钮保存。(操作为:点击name(如:clock))-右击-【value】-【count】(如设置binary;start value=0;end value=1;count every=10ns),同理设置name ld,input(如0,1,5),保存)。然后【start simulation】,出name output的输出图。
5、功能仿真,即没有延迟的仿真,仅用来检测思路是否正确。
C、RAM:
1个bdf文件,用来定义顶层实体(LPM_RAM_IO芯片)
1个vhd文件,用来定义底层实体(8位寄存器)
1个mif文件,用来存储数据
1个vwf文件,用来进行波形仿真,将验证的波形输入
1、新建,编写源代码。
(1).选择保存项和芯片类型:【File】-【new project wizard】-【next】(设置文件路径+设置project name为【C:\Users\lenovo\Desktop\笔记\大二上\数字电路\实验课\实验四\RAM】)-【next】(设置文件名【gg】)-【next】(设置芯片类型为【cyclone-EP1CT144C8】)-【finish】
(2).新建:【file】-【new】(【design file-VHDL file】)-【OK】
(3)生成bsf文件
2、写好源代码,保存文件(gg.vhd)。
3、新建,编写mif。新建:【file】-【new】(【design file-mif file】)-【OK】
4、编写mif中的存储数据。
5、新建,编写bdf。新建:【file】-【new】(【design file-bdf file】)-【OK】
6、写好源代码,设置ram。点击ram芯片右上角处生成的表格,双击后会产生提示框,按照实验指导书中的样例依次修改ram芯片的各个属性,并将之前写的mif引入到ram芯片中。将先前生成的bsf文件引入到bdf中,按照实验指导书中的进行连接,保存文件(gg.bdf)。
7、编译与调试。确定源代码文件为当前工程文件,点击【processing】-【start compilation】进行文件编译。编译结果有一个警告,文件编译成功。
8、波形仿真及验证。新建一个vector waveform file。按照程序所述插入inclock,ld,cs,dl,xl,address,address2,dio八个节点(inclock,ld,cs,dl,xl,address,address2为输入节点,dio为输出节点)。(操作为:右击 -【insert】-【insert node or bus】-【node finder】(pins=all;【list】)-【>>】-【ok】-【ok】)。任意设置inclock,ld,cs,dl,xl,address,address2的输入波形…点击保存按钮保存。(操作为:点击name(如:inclock))-右击-【value】-【count】(如设置binary;start value=0;end value=1;count every=10ns),同理设置name ld,cs,dl,xl,address,address2(如0,1,5),保存)。然后【start simulation】,出name dio的输出图。
9、功能仿真,即没有延迟的仿真,仅用来检测思路是否正确。
D、寄存器组:
1个vhd文件,用来定义顶层实体
1个vwf文件,用来进行波形仿真,将验证的波形输入
1、 新建,编写源代码。
(1).选择保存项和芯片类型:【File】-【new project wizard】-【next】(设置文件路径+设置project name为【C:\Users\lenovo\Desktop\笔记\大二上\数字电路\实验课\实验四\寄存器组】)-【next】(设置文件名【gg】)-【next】(设置芯片类型为【cyclone-EP1CT144C8】)-【finish】
(2).新建:【file】-【new】(【design file-VHDL file】)-【OK】
2、写好源代码,保存文件(gg.vhd)。
3、编译与调试。确定源代码文件为当前工程文件,点击【processing】-【start compilation】进行文件编译。编译结果有一个警告,文件编译成功。
4、波形仿真及验证。新建一个vector waveform file。按照程序所述插入clock,we,input,raa,rwba,output_a,output_b七个节点(clock,we,input,raa,rwba为输入节点,output_a,output_b为输出节点)。(操作为:右击 -【insert】-【insert node or bus】-【node finder】(pins=all;【list】)-【>>】-【ok】-【ok】)。任意设置clock,we,input,raa,rwba的输入波形…点击保存按钮保存。(操作为:点击name(如:clock))-右击-【value】-【count】(如设置binary;start value=0;end value=1;count every=10ns),同理设置name we,input,raa,rwba(如0,1,5),保存)。然后【start simulation】,出name output_a,output_b的输出图。
5、功能仿真,即没有延迟的仿真,仅用来检测思路是否正确。
2、实验过程
A.指令计数器PC
a.源代码
代码解释:
通过中间变量s用来计数,在指令信号满足条件的时候执行累加操作或者赋值操作。
b.逻辑图
c.波形仿真
波形设计解释:
结果分析及结论
在第一个时钟周期进行读取操作,读取到的是pc的初始值“00000000”,体现在5ns处的下降沿。第二个周期进行写入操作,将外部输入的值“10010110”写入到pc中,体现在15ns处的下降沿,后续就寄存进行累加操作。
符合输出结果,正确
B.寄存器
a.源代码
代码解释:
通过定义一个中间变量a达到存储的目的,当且仅当ld控制信号为1且为时钟上升沿的时候,外部输入信号可以改变中间变量的值,以达到存储的目的
b.逻辑图
c.波形仿真
波形设计解释:
结果分析及结论:
第一个时钟周期进行写入操作,体现在5ns处的时钟上升沿,将输入数据10110011写入到寄存器中,第二个时钟周期不进行写入,输出不变。
C.RAM
a.源代码
寄存器的vhdl文件
Ram的bdf文件(顶层实体)
代码解释:
底层文件为一个8位寄存器,用来存储ram输出的值;顶层实体是调用LPM_RAM_IO芯片构成的bdf文件,通过ram来实现对存储文件mif文件的引用,来达到引用数据的目的。
b.逻辑图
c.波形仿真
波形设计解释:
结果分析及结论:
第一个周期不读不写,输出XXXXXXXX,
第二个周期进行读取操作,读取的地址是第00000000个元素,查表得00000001
第三个周期进行写入操作,将10110010写入第00000000个元素
第四个周期由于cs=0,无法进行读取操作,输出XXXXXXXX
第五个周期不读不写,输出XXXXXXXX
第六个周期进行写入操作,将10110010写入第00000001个元素
第七个周期进行读取操作,读取的地址是第00000000个元素,由于之前将10110010写入,现在为10110010
D.寄存器组
a.源代码
代码解释:
通过定义三个八位的中间变量和一个两位的中间变量,实现建立一个包含三个八位二进制寄存器和一个两位二进制地址寄存器的寄存器组
b.逻辑图
c.波形仿真
波形设计解释:
结果分析及结论:
第一个周期将输入值存入到a寄存器
第二个周期将输入值存入到b寄存器
第三个周期将输入值存入到c寄存器
第四个周期将输入值的最后两位作为地址存入到d寄存器
第五个周期,按照raa,rwba的指示,output_a输出a寄存器的值,output_b输出a寄存器的值
第六个周期,按照raa,rwba的指示,output_a输出a寄存器的值,output_b输出b寄存器的值
以此类推,结果正确。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158060.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...