黄红涛vhdl实验报告实验3 触发器.docx
《黄红涛vhdl实验报告实验3 触发器.docx》由会员分享,可在线阅读,更多相关《黄红涛vhdl实验报告实验3 触发器.docx(13页珍藏版)》请在冰豆网上搜索。
![黄红涛vhdl实验报告实验3 触发器.docx](https://file1.bdocx.com/fileroot1/2023-6/30/dccb725b-24b9-4e1c-9452-eb648d77bf9f/dccb725b-24b9-4e1c-9452-eb648d77bf9f1.gif)
黄红涛vhdl实验报告实验3触发器
学生实验报告
实验课名称:
VHDL硬件描述语言
实验项目名称:
触发器
专业名称:
电子科学与技术
班级:
32050801
学号:
3205080134
学生姓名:
黄红涛
教师姓名:
程鸿亮
_2010__年__11__月__6__日
组别_____________________同组同学_刘增辉
实验日期:
2011年11月6日实验室名称______成绩_____
一、实验名称:
触发器
二、实验目的与要求:
设计RS、JK、D、T四种触发器,掌握异步复位置位的方法以及四种触发功能的实现方法,掌握QuartusII软件的使用方法以及GW48型SOPC开发平台中的输入输出模式配置方法。
通过VHDL编程,实现RS、JK、D、T四种触发器,要求四种触发器同时在开发平台
上实现,并共享置位、复位端,JK、D、T三种触发器共享时钟信号端,具体接口如下所示:
s:
所有触发器的置位输入端,低电平有效;
r:
所有触发器的复位输入端,低电平有效;
j:
JK触发器可j控制输入端;
k:
JK触发器的k控制输入端;
cp:
时钟信号;
d:
D触发器数据输入端;
t:
T触发器控制端。
q_rs、qn_rs:
RS触发器状态输出端;
q_jk、qn_jk:
JK触发器状态输出端;
q_d、qn_d:
D触发器状态输出端;
q_t、qn_t:
T触发器状态输出端;
err[3..0]:
无效状态显示输出端。
首先在QuartusII上进行功能和时序仿真,之后通过器件及其端口配置下载程序到SOPC开发平台中。
在硬件实现中,要求:
1.用拨动开关实现触发器的控制信号(r、s、t、j、k、d):
注:
要求使用最右面6个开关。
2.用实验平台的按键实现时钟信号(cp):
3.用LED阵列实现状态输出的显示:
注:
要求用LED3、LED11分别显示RS触发器的q_rs和qn_rs;用LED4、LED12分别显示T触发器的q_t和qn_t;用LED5、LED13分别显示JK触发器的q_jk和qn_jk;用LED6、LED14分别显示D触发器的q_d和qn_d;用LED1、LED9、LED8、LED16同时显示无效状态。
三、实验内容:
1.打开QuartusII软件,建立一个新的工程:
2.建立VHDL文件
3.建立矢量波形文件
4.进行功能仿真
5.进行时序仿真
6.器件的下载
四、实验条件:
1.安装WindowsXP系统的PC机;
2.安装QuartusII6.0EDA软件;
3.GW48型SOPC开发平台;
五、实验原理:
1算法流程图:
2.硬件设置与调试原理:
1)用拨动开关实现触发器的控制信号(r、s、t、j、k、d),用实验平台的按键实现时钟信号cp,这时,可以直接通过拨动六个开关的位置和按键的状态,改变输入信号,开关上置表示输入高电平‘1’,开关下置表示输入低电平‘0’,按键指示灯亮表示为高电平,按键指示灯暗表示为低电平。
2)用LED阵列实现状态输出的显示,根据LED的显示原理,加在LED上的电平为高电平时LED正常发光,低电平时,LED不会正常发光。
用LED3、LED11分别显示RS触发器的q_rs和qn_rs;用LED4、LED12分别显示T触发器的q_t和qn_t;用LED5、LED13分别显示JK触发器的q_jk和qn_jk;用LED6、LED14分别显示D触发器的q_d和qn_d;用LED1、LED9、LED8、LED16同时显示无效状态。
这样各个触发器随时钟脉冲产生的状态就可以直接通过LED的发光状态显示出来。
3)各个触发器随cp时钟变化的规律如下表格:
这样,触发器的时序功能在试验平台上得到实现和验证。
六、源代码:
libraryieee;
useieee.std_logic_1164.all;
entitytrigger_allis
port(s,r,j,k,cp,d,t:
instd_logic;
q_rs,qn_rs:
outstd_logic;
q_jk,qn_jk:
outstd_logic;
q_d,qn_d:
outstd_logic;
q_t,qn_t:
outstd_logic;
err:
outstd_logic_vector(3downto0));
endentitytrigger_all;
architectureoneoftrigger_allis
signalq_temp_rs,qn_temp_rs,q_temp_jk,qn_temp_jk,q_temp_d,qn_temp_d,q_temp_t,qn_temp_t:
std_logic;
begin
prs:
process(r,s)
begin
if(r='0'ands='1')then
q_temp_rs<='0';
qn_temp_rs<='1';
elsif(r='1'ands='0')then
q_temp_rs<='1';
qn_temp_rs<='0';
elsif(r='0'ands='0')then
q_temp_rs<='1';
qn_temp_rs<='1';
endif;
q_temp_rs<=snandqn_temp_rs;
qn_temp_rs<=rnandq_temp_rs;
endprocessprs;
pjk:
process(r,s,j,k,cp)
begin
if(r='0'ands='1')then
q_temp_jk<='0';
qn_temp_jk<='1';
elsif(r='1'ands='0')then
q_temp_jk<='1';
qn_temp_jk<='0';
elsif(r='0'ands='0')then
q_temp_jk<='1';
qn_temp_jk<='1';
elsif(cp'eventandcp='1')then
if(j='0'andk='1')then
q_temp_jk<='0';
qn_temp_jk<='1';
elsif(j='1'andk='0')then
q_temp_jk<='1';
qn_temp_jk<='0';
elsif(j='1'andk='1')then
q_temp_jk<=notq_temp_jk;
qn_temp_jk<=notqn_temp_jk;
endif;
endif;
endprocesspjk;
pd:
process(r,s,d,cp)
begin
if(r='0'ands='1')then
q_temp_d<='0';
qn_temp_d<='1';
elsif(r='1'ands='0')then
q_temp_d<='1';
qn_temp_d<='0';
elsif(r='0'ands='0')then
q_temp_d<='1';
qn_temp_d<='1';
elsif(cp'eventandcp='1')then
q_temp_d<=d;
qn_temp_d<=notd;
endif;
endprocesspd;
pt:
process(r,s,t,cp)
begin
if(r='0'ands='1')then
q_temp_t<='0';
qn_temp_t<='1';
elsif(r='1'ands='0')then
q_temp_t<='1';
qn_temp_t<='0';
elsif(r='0'ands='0')then
q_temp_t<='1';
qn_temp_t<='1';
elsif(cp'eventandcp='1')then
if(t='1')then
q_temp_t<=notq_temp_t;
qn_temp_t<=notqn_temp_t;
else
q_temp_t<=q_temp_t;
qn_temp_t<=qn_temp_t;
endif;
endif;
endprocesspt;
perr:
process(r,s)
begin
if(r='0'ands='0')then
err<="1111";
else
err<="0000";
endif;
endprocess;
q_rs<=q_temp_rs;
qn_rs<=qn_temp_rs;
q_jk<=q_temp_jk;
qn_jk<=qn_temp_jk;
q_d<=q_temp_d;
qn_d<=qn_temp_d;
q_t<=q_temp_t;
qn_t<=qn_temp_t;
endarchitectureone;
七、实验结果与分析
1)波形时序仿真,其仿真结果如下图:
创建的波形文件,进行功能仿真:
进行时序仿真:
2)以下是对参考代码的编译下载后的部分图例:
说明:
通过异步清零方式(r=1,s=0),此时无论j,k,t,d输入为多少四个触发器的输出都为1。
说明:
当r、s端同时为高电平时,可以通过cp端(按键1)来改变T、JK和D触发器的状态,RS触发器的状态由其前一有效状态决定。
上图是其中的一个截图。
此时,由于d=k=t=0,j=1所以led3保持亮,led4,led5,led14全亮。
说明:
当r、s端同时为0时,触发器处于无效状态,触发器所有的输出为高电平,对应LED1、LED9、LED8、LED16被点亮以表示此无效状态。
八、讨论和回答问题及体会:
1、触发器是数字系统中非常重要的器件,它应用于有记忆功能的逻辑电路之中。
不同的触发器在状态的变化中具有不同的动作特点。
用VHDL语言进行描述时,需要分析真值表,掌握其触发方式,结合触发器本身特点,充分利用if语句,让程序简单易读。
2、RS触发器存在无效状态,RS应具有互补的特性,当r、s端同时为0时,触发器处于无效状态,输出为不定态。
这一点在程序的设计中也应该特别注意。
3、在程序的编写过程中,我们应该首先分析各个端口的优先级顺序,这一点就可以利用if语句首先进行判断。
这一点是用VHDL语言进行设计数字逻辑电路的共同点,是我们学习过程中必须掌握的内容。