的FPGA读写控制电路原理图如图2-4-2所示。实验验证步骤如下:
1、验证程序文件在DEMO8_sram16b目录,工程文件是sram.gdf,下载sram.sof至实验台上的FPGA,选择实验电路模式为NO.1;用一接插线将适配板上的P198针与键9的插针相接,键9作为清0控制端。
2、利用键4、键3、键2、键1输入数据,放在RAM数据口,如ABCDH(显示于数码管4/3/2/1); 3、按动键9,对地址信号发生计数器清0,键7置0,使处于读RAM状态;
4、按动1次或多次键8,输入希望的地址值(显示于发光管D8—D1,左为高位);
5、按动读写控制键7,使其从0 ? 1 ? 0 ,即 读 ? 写 ? 读,如果操作无误,这时应该在数码管8/76/5上显示已被写入的数据(如ABCDH),因为此时RAM的OE端的电平是0,正处于读数据电平,
6、重复(2)—(5),依次写入数据。
7、按动键9,对地址信号发生计数器清0,之后连续按键8,递增地址值,将能依次顺序(显示于数码8/7/6/5上)读出外部16位RAM中已写入的数据,与输入数据进行比较。
图2-4-3 16位SRAM和6264电路原理图
5.FPGA与外部EEPROM接口实验
一.实验目的
1.掌握FPGA与外部EEPROM的硬件接口技术;
二.实验原理
与上一实验FPGA与外部RAM接口实验不同的地方是,RAM是随机存储器,掉电以后RAM中数据会丢失,而EEPROM是可以电改写的只读存储器(图2-5-1),工作时可以改写其中的数据,掉电以后EEPROM中数据不会丢失。FPGA中的接口控制电路结构与上一实验基本相同,但外部存储器芯片由RAM6264改为EEPROM 28C64。由于EEPROM 28C64的写入时间比SRAM的时间长,因此在向28C64写入数据时CLK0的工作频率需适当降低。电路结构中的CLK0与实验台的CLOCK0时钟频率相连接,CLOCK0可选择16kHz~64kHz。从EEPROM中读数据时,其工作速度与读RAM的速度相同。
对28C64的读写可以使用以上给出的对6264完全相同的控制逻辑电路(DEMO7_ram6264_EEPROM2864目录,工程文件是2864-b.gdf)。需要特别注意的是,与RAM的写时序略有不同,若要将在2864数据线口上的数据写入此时对应的地址单元中,必须在2864的写控制端WE,施加一个低电平脉冲,即:1 ? 0 ? 1; 0的时间延迟是2864对数据的烧写时间,约10ms。普通RAM则不必如此,只要将WE始终置0,改变地址值,就能将数据连续写入RAM对应的地址单元中。
- - 16
三.实验步骤
1.在实验台的目标板的EEPROM/RAM插座中接EEPROM 28C64芯片;其余,同上一实验。
实验三 微控制器实验
1 时序电路实验
一.实验目的
(1)掌握节拍脉冲发生器的设计方法和工作原理。 (2)理解节拍脉冲发生器的工作原理。
二.实验原理
计算机之所以能够按照人们事先规定的顺序进行一系列的操作或运算,就是因为它的控制部分能够按一定的先后顺序正确地发出一系列相应的控制信号。这就要求计算机必须有时序电路。控制信号就是根据时序信号产生的。本实验说明时序电路中节拍脉冲发生器的工作原理。
1、连续节拍发生电路(图3-1-1):
可由4个D触发器组成,可产生4个等间隔的时序信号T1~T4,其中CLK1为时钟信号,由实验台右边的方波信号源CLOCK0提供,可产生1Hz~12MHz的方波信号频率。学生可根据实验自行选择信号频率。当RST1为低电平时,T1输出为“1”,而T2、T3、T4输出为“0”;当RST1由低电平变为高电平后,T1~T4将在CLK1的输入脉冲作用下,周期性地轮流输出正脉冲,机器进入连续运行状态(EXEC)。
图3-1-1节拍脉冲发生器的工作原理
T1~T4以及CLK1、RST1的工作波形如图3-1-2所示。示例文件在demo9_S_T文件夹中,工程文件是T4.gdf。硬件实验验证方法如图3-1-1所示,下载T4.SOF 文件,选择模式1,Clock0接4Hz,键8控制RST1,发光管1、2、3、4分别显示T1、T2、T3、T4的输出电平(实验结果与仿真波形图3-1-2比较!)。
图3-1-2 节拍脉冲发生器工作波形
图3-1-3单步运行电路工作原理
- - 17
图3-1-4单步运行电路工作波形
2、单步节拍发生电路(图3-1-3):
将图3-1-1电路稍加改变即可得到图3-1-3所示的单步运行电路。该电路每当RST1出现一个负脉冲后,仅输出一组T1、T2、T3、T4节拍信号,直到RST1出现下一个负脉冲,波形如图3-1-4所示。
示例文件也在demo9_S_T文件夹中,工程文件是T5.gdf。硬件实验验证方法如图3-1-3所示,下载T5.SOF 文件,选择模式1,Clock0接4Hz(选择范围是1Hz-50MH),键8控制RST1,发光管1、2、3、4分别显示T1、T2、T3、T4的输出电平(实验结果与仿真波形图3-1-4比较!)。
3、单步/连续节拍发生电路(图3-1-5):。
增加两个2-1多路选择器,可将图3-1-3电路改变为图3-1-5所示电路。S0是单步或连续节拍发生控制信号,当S0=0,选择单步运行方式;当S0=1,选择连续运行方式。图3-1-6为此电路的仿真波形。
示例文件也在demo9_S_T文件夹中,工程文件是TS5.gdf。硬件实验验证:下载TS5.SOF 文件,选择模式1,Clock0接4Hz,键8控制RST1,键7控制S0,发光管1、2、3、4分别显示T1、T2、T3、T4的输出电平(实验结果与仿真波形图3-1-6比较!)。
图3-1-5单步/连续运行电路工作原理
图3-1-6单步运行电路工作波形
三.实验步骤
(1) 硬件验证测试连续节拍发生电路(图3-1-1),实验结果与仿真波形图3-1-2比较!
(2) 硬件验证测试单步节拍发生电路(图3-1-3),实验结果与仿真波形图3-1-4比较! (3) 硬件验证测试单步/连续节拍发生电路(图3-1-5),实验结果与仿真波形图3-1-6比较! (4) 绘出相应的时序波形图。
四.实验报告
(1)实验原理。 (2)绘制相应的时序波形图。 (3)实验结果分析、讨论。
五.思考题
1.单步运行与连续运行有何区别,它们各自的使用环境怎样?2.如何实现单步/连续运行工作方式的切换?3.用VHDL设计实现节拍控制电路,并通过实验台验证其(单步/连续)功能。
2.程序计数器PC与地址寄存器AR实验
一.实验目的
1.掌握地址单元的工作原理。
- - 18
2.掌握的两种工作方式,加1计数和重装计数器初值的实现方法;
3.掌握地址寄存其从程序计数器获得数据和从内部总线获得数据的实现方法。
二.实验原理
地址单元主要由三部分组成:地址寄存器和多路开关。 程序计数器PC用以指出下一条指令在主存中的存放地址,CPU正是根据PC的内容去主存取指令的,因程序中指令是顺序执行的,所以PC有自增功能。程序计数器提供下一条程序指令的地址,如电路图3-2-1所示,在T4时钟脉冲的作用下具有自动加1的功能;在LDPC信号的作用下可以预置计数器的初值(如子程序调用或中断相应等),当LDPC为高电平时,计数器装入data[ ]端输入的数据。aclr是计数器的清0端,高电平有效(高电平清零);aclr为低电平时,允许计数器正常计数。
图3-2-1程序计数器原理图
地址寄存器AR(74273)锁存访问内存SRAM的地址。273中的地址来自两个渠道。一是程序计数器PC的输出,通常是下一条指令的地址;二是来自于内部数据总线的数据,通常是被访问操作数的地址。 为了实现对两路输入数据的切换,在FPGA的内部通过总线多路开关BUSMUX进行选择。LDAR与多路选择器的sel相连,当LDAR为低电平,选择程序计数器的输出;当LDAR为高电平时,选择内部数据总线的数据。
图3-2-2 程序计数器工作波形
三.实验步骤
1.按照 图3-2-1程序计数器原理图编辑、输入电路,实验台选择NO.0工作模式。对输入原理图进行编译、引脚锁定、并下载到实验台。示例文件在demoA_PC_AR文件夹中,工程文件是PC_unit.gdf。硬件实验验证(与仿真波形图3-2-2比较!)。实验说明:
(1)下载.\\ demoA_PC_AR\\pc_unit.sof ; (2)用模式键选模式“0”,再按一次右侧的复位键; (3)键2和键1可输入8位总线数据B[7..0](此值显示于发光管D1~D8和数码管2/1);CLR(键5)按2次,产生一正脉冲,高电平清零;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按动两次产生一个计数脉冲。
2.通过B[7..0]设置程序计数器的预加载数据。当LDPC=0时,观察程序计数器自动加1的功能;当LDPC=1时,观察程序计数器加载输出情况:
1、所有键置0,键2/1输入A5,按键5,PC计数器清0;2、连续按动键8,可以从数码8/7上看到AR的输出,即PC值;3、按键6,选通直接输出总线上的数据A5作为PC值,按键8,产生一个脉冲,
- - 19
即可看到AR的输出为A5;4、使键6=0,仍选通PC计数器输出,这时键2/1输入86,按键7产生一个上升脉冲,即用LDPC将86加载进PC计数器;5、连续按动键8,可以发现AR的输出在86上累加输出。
四.实验报告
(1)实验原理。 (2)绘制相应的时序波形图。 (3)实验结果分析、讨论。
五.思考题
分支和转移程序与顺序程序有何区别?要实现程序的分支和转移,需要对程序计数器PC和地址寄存器AR作怎样的操作?应改变哪些控制信号,请在实验台上实现程序转移的功能。
3.微控制器组成实验
一.实验目的
1.掌握微程序控制器的工作原理和构成原理 2.掌握微程序的编写、输入,观察微程序的运行。
二.实验原理
1.微程序控制电路
微程序控制器的组成如图3-3-1。其中控制存储器由FPGA中的LPM_ROM构成,输出24位控制信号。在24位控制信号中,微命令信号18位,微地址信号6位。在不判别测试的情况下,T2时刻打入微地址寄存器uA的内容即为下一条微指令地址。当T4时刻进行测试判别时,转移逻辑满足条件后输出的负脉冲通过强制端将某一触发器置为“1”状态,完成地址修改。
微程序控制器中的微控制代码可以通过对FPGA中LPM_ROM的配置进行输入,通过编辑
LPM_ROM.mif文件修改微控制代码。详细情况可参考实验二中FPGA中LPM_ROM的配置方法。微指令控制电路内部结构如图3-3-2所示。
图3-3-1微程序控制电路
图3-3-2微指令控制电路内部结构
- - 20