1实验1连续节拍发生电路设计实验一、实验内容掌握节拍发生器的设计方法,理解节拍脉冲发生器的工作原理。二、实验原理1.连续节拍发生电路连续节拍发生电路由四个D触发器组成,可产生四个等间隔的时序信号T1-T4。其中CLK1为时钟信号。当RST1为低电平时,T1输出为“1”,而T2、T3、T4输出为“0”;当RST1由低电平变为高电平后,T1-T4将在CLK1的输入脉冲作用下,周期性轮流的输出正脉冲,机器进入连续运行状态(EXEC)。T1-T4以及CLK1、RST的工作波形如下所示。图1-1连续节拍发生电路2.单步节拍发生电路将图1-1电路稍加改变即可得到图1-2所示的单步运行电路。每当RST1出现一个负脉冲后,该电路仅输出一组T1、T2、T3、T4节拍信号,直到RST1出现下一个负脉冲。图1-2单步节拍发生电路3.单步/连续节拍发生电路2增加两个2选一多路选择器,可将1-2的电路改变为1-3的电路。S0是单步或连续节拍发生控制信号,当S0=0,选择单步运行模式;当S0=1,选择连续运行方式。图1-3单步/连续节拍发生电路三、实验任务1.连续节拍发生电路示例顶层文件是T4.bdf。硬件电路如图1-1所示。下载T4.sof文件,选择实验模式No.1,CLOCK0接4Hz,键8控制RST1,高电平时可以看到,发光管1-4分别显示T1-T4的输出电平。实验结果与书上的仿真波形图比较。2.单步节拍发生电路用单步节拍发生电路可以对微程序进行单步调试运行,电路如1-2所示。该电路每当RST1出现一个负脉冲后,仅输出一组T1、T2、T3、T4节拍信号,直到RST1出现下一个负脉冲。顶层文件是T5.bdf。下载T5.sof文件,选择实验模式No.1,CLOCK0接4Hz,键8控制RST1。实验结果与书上的仿真波形图比较。3.单步/连续节拍发生电路增加两个2选1多路选择器,可将图1-2的电路改变为图1-3的电路。S0是单步或连续节拍发生控制信号,当S0=0,选择单步运行方式;当S0=1,选择连续运行方式。顶层文件是TS5.bdf。下载TS5.sof文件,选择实验模式No.1,CLOCK0接4Hz,键8控制RST1。实验结果与书上的仿真波形图比较。四、实验步骤1.软件编译2.仿真波形图a.连续节拍发生电路图1-4连续节拍发生电路3b.单步节拍发生电路图1-5单步节拍发生电路c.单步/连续节拍发生电路图1-6单步/连续节拍发生电路3.分析报告a.连续节拍发生电路高电平时可以看到,发光管1-4分别显示T1-T4的输出电平。b.单步节拍发生电路每出现一个负脉冲,发光管1-4分别显示T1-T4的输出电平一次。c.单步/连续节拍发生电路发光管1-4分别显示T1-T4的输出电平。五、问题分析1.单步运行于连续运行有何区别,它们各自的使用环境怎样?单步运行只运行固定时钟周期的信号,而连续运行会一直发生信号。2.如何实现单步/连续运行工作方式的切换?使用S0引脚控制21MUX的2选1控制端。当S0=0时,Y=A,为单步方式;当S0=1时,Y=B,为连续方式。3.给出每个电路的原理图分析说明为何能产生所需节拍。对于实验任务2特别要对比没有t5输入时的仿真时序图,借此说明t5的作用。任务1由四个D触发器组成,可产生四个等间隔的时序信号T1-T4。当RST1为低电平时,T1输出为1,而T2、T3、T4输出为0;当RST1由低电平变为高电平后,T1-T4将在CLK1的输入脉冲作用下,周期性地轮流输出正脉冲;任务2中,每当RST1出现一个负脉冲后,该电路仅输出一组T1、T2、T3、T4节拍信号,直到RST1出现下一个负脉冲;没有T5时,一个周期结束后,下一个时钟信号到来时,会进入下一周期,为连续节拍发生器;有T5时,在一个周期结束后,T5=1,所有触发器收得的时钟信号始终为1,不会有下一个时钟信号上升沿到来,为单步节拍发生器。在任务3中,S0为单步或连续节拍发生控制信号,可以选择运行方式。4实验2LPM_ROM与LPM_RAM一、实验内容1.LPM_ROM掌握FPGA中LPM_ROM的设置,作为只读存储器ROM的工作特性和配置方法;用文本编辑器编辑MIF文件配置ROM,学习将程序代码以MIF格式文件加载于LPM_ROM中;在初始化存储器编辑窗口编辑MIF文件配置ROM;验证FPGA中LPM_ROM的功能。2.LPM_RAM了解FPGA中RAMlpm_ram_dq的功能;掌握lpm_ram_dq的参数设置和使用方法;掌握lpm_ram_dq作为随机存储器RAM的仿真测试方法、工作特性和读写方法。二、实验原理1.LPM_ROM程序存储器是用来存放用户程序的,通常采用只读存储器ROM来存储程序。CPU中的一些重要部件,如RAM、ROM等,可直接调用LPM模块构成。图2-1LPM_ROM图2-2rom_a.mif2.LPM_RAM数据存储器存放运算数据及中间结果,一般采用随机存储器RAM来实现其功能。CPU5中的一些重要部件,如RAM、ROM等,可直接调用LPM模块构成。图2-3LPM_RAM三、实验任务1.LPM_ROM用图形编辑设计LPM_ROM。要求:用LPM元件库设计LPM_ROM,地址总线宽度address[]和数据总线宽度q[]分别为6位和24位;建立相应的工程文件,设置LPM_ROM数据参数,LPM_ROM配置文件的路径(ROM_A.mif),并设置在系统ROM/RAM读写允许,以便能对FPGA中的ROM在系统读写;锁定输入输出引脚;完成全程编译;下载SOF文件至FPGA,改变LPM_ROM的地址a[5..0],外加读脉冲,通过实验台上的数码管比较读出的数据是否与初始化数据(rom4.mif中的数据)一致;打开QuartusII的在系统存储模块读写工具,了解FPGA中的ROM中的数据,并对其进行在系统写操作;记录实验数据,写出实验报告,给出仿真波形图。2.LPM_RAM数据从ram_dp0的左边D[7..0]输入,从右边Q[7..0]输出,R/W——为读/写控制信号端。数据的写入:当输入数据和地址准备好以后,在inclock是地址锁存时钟,当信号上升沿到来时,地址被锁存,数据写入存储单元。数据的读出:从A[7..0]输入存储单元地址,在CLK信号上升沿到来时,该单元数据从Q[7..0]输出。四、实验步骤1.软件编译2.仿真波形图a.LPM_ROM图2-4ROM读写情况6b.LPM_RAM图2-5RAM读写情况图2-6仿真波形图4.分析报告a.LPM_ROM24位数据输出由数码管8-3显示,六位地址由键2、键1输入,键1负责低四位,地址锁存时钟CLK由键8控制,每一次上升沿,将地址锁入,数码管8-3将显示ROM中输出的数据。发光管8-1显示输入的6位地址值。b.LPM_RAM通过键1、键2输入RAM的8位数据,键3、键4输入存储器的8位地址。键8控制读写允许,低电平时读允许,高电平时写允许;键7(CLK0)产生读写时钟脉冲,即生成写地址锁存脉冲,对lpm_ram_dq进行写/读操作。五、问题分析如何建立lpm_ram_dq的数据初始化,如何导入和存储lpm_ram_dq参数文件?生成一个MIF文件,并导入以上的RAM中。数据从左边D[7..0]输入,从右边Q[7..0]输出。在lpm_ram_dq中可以加入初始化文件(如:5_ram.mif)。首先控制读出初始化数据,与载入的初始化文件中的数据进行比较,然后控制写入一些数据,再读出比较;写入的数据也可以在读写窗口中观察mif文件的变化,导入的数据存储在mif文件中。7实验3程序计数器PC与地址寄存器AR实验一、实验内容掌握地址单元的工作原理;掌握PC的两种工作方式,加1计数和重装计数器初值的实现方法;掌握地址寄存器AR从程序计数器PC获得数据和从内部总线BUS获得数据的实现方法。二、实验原理a.采用总线多路开关联接方式地址单元主要由三部分组成:程序计数器PC、地址寄存器AR和多路开关BUSMUX。程序计数器PC用以指出下一条指令在主存中的存放地址,CPU正是根据PC的内容去存取指令的。因程序中指令是顺序执行的,所以PC有自增功能。程序计数器提供下一条程序指令的地址,如图4-64所示,在T4时钟脉冲的作用下具有自动加1的功能;在LDPC信号的作用下可以预置计数器的初值(如子程序调用或中断相应等)。当LDPC为高电平时,计数器装入data[]端输入的数据。aclr是计数器的清0端,高电平有效(高电平清零);aclr为低电平时,允许计数器正常计数。地址寄存器AR(DFF_8)锁存访问内存SRAM的地址。地址寄存器AR的地址来自两个渠道,一是程序计数器PC的输出,通常是下一条指令的地址;二是来自于内部数据总线的数据,通常是被访问操作数的地址。为了实现对两路输入数据的切换,在FPGA的内部通过总线多路开关BUSMUX进行选择。LDAR与多路选择器的sel相连,当LDAR为低电平,选择程序计数器的输出;当LDAR为高电平时,选择内部数据总线的数据。图3-1采用总线多路开关联接方式b.采用PC、AR通过三态门lpm_bustri与BUS连接程序计数器PC与地址寄存器AR结合,产生对存储器RAM进行读写的地址。地址单元8主要由三部分组成:程序计数器PC、地址寄存器AR和三态门lpm_bustri。程序计数器PC用以指出下一条指令在主存中的存放地址,CPU正是根据PC的内容去存取指令的。程序计数器提供下一条程序指令的地址,在时钟脉冲PC_CLK的作用下具有自动加1的功能;在LOAD_PC信号的作用下可以预置计数器的初值(如子程序调用或中断响应等)。当LOAD_PC为高电平时,计数器装入data[7..0]端输入的数据。RST是计数器的清零端,高电平有效(高电平清零);RST为低电平时,允许计数器正常计数。地址寄存器AR采用锁存器lpm_latch结构,锁存访问内存SRAM的地址。图3-2采用PC、AR通过三态门lpm_bustri与BUS连接三、实验任务a.采用总线多路开关联接方式按照图4-1,程序计数器原理图编辑、输入电路,实验台选择0工作模式。对输入原理图进行编译、引脚锁定、并下载到实验台。首先下载pc_unit.sof,用模式键选模式“0”,再按一次右侧的复位键;键2和键1可输入8位总线数据B[7..0](此值显示于发光管D1~D8和数码管2/1);CLR(键5)按2次(010),产生一正脉冲,高电平清零;LDAR(键6)=0时,BUSMUX输出程序计数器PC的值;LDAR=1时,BUSMUX输出B[7..0]总线数据。LDPC(键7):程序计数器PC预置控制端,当LDPC=1时,将B[7..0]总线数据装入程序计数器PC;当LDPC=0时,程序计数器PC处于计数自动工作状态,对T4进行计数;T4(键8):程序计数器PC的计数时钟CLK,键8按动两次产生一个计数脉冲。通过B[7..0]设置程序计数器的预加载数据。当LDPC=0时,观察程序计数器自动加1的功能;当LDPC=1时,观察程序计数器加载输出情况。b.采用PC、AR通过三态门lpm_bustri与BUS连接按照图4-2,对程序计数器原理图进行编辑、输入电路,采用LPM库中的元件lpm_latch锁存器、lpm_counter计数器和lpm_bustri总线三态输出缓冲器进行设计,选择电路模式No.0。四、实验步骤1.软件编译92.仿真波形图图3-3仿真波形图3.分析报告a.采用总线多路开关联接方式所有键置0,键2/键1输入A5;按键计数器清;连续按动键8,可以从数码8/7上看到AR的输出,即PC值;按键6,输出高电平’1’,选通直接输出总线上的数据A5作为PC值,按键8,产生一个脉冲上升沿,即可看到AR(显示在数码8/7)的输出为A5;使键6=0,仍选通PC计数器输出,这时键2/1输入86,按键7产生一个上升脉冲,即用LDPC将86加载进PC计数器;连续按动键8,可以发现AR的输出在86上累加输出:86、87、88等。b.采用PC、AR通过三态门lpm_bust