黄红涛vhdl实验报告实验3 触发器.docx

上传人:b****3 文档编号:27373944 上传时间:2023-06-30 格式:DOCX 页数:13 大小:963.76KB
下载 相关 举报
黄红涛vhdl实验报告实验3 触发器.docx_第1页
第1页 / 共13页
黄红涛vhdl实验报告实验3 触发器.docx_第2页
第2页 / 共13页
黄红涛vhdl实验报告实验3 触发器.docx_第3页
第3页 / 共13页
黄红涛vhdl实验报告实验3 触发器.docx_第4页
第4页 / 共13页
黄红涛vhdl实验报告实验3 触发器.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

黄红涛vhdl实验报告实验3 触发器.docx

《黄红涛vhdl实验报告实验3 触发器.docx》由会员分享,可在线阅读,更多相关《黄红涛vhdl实验报告实验3 触发器.docx(13页珍藏版)》请在冰豆网上搜索。

黄红涛vhdl实验报告实验3 触发器.docx

黄红涛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语言进行设计数字逻辑电路的共同点,是我们学习过程中必须掌握的内容。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1