0000000 用图形法设计模为12的同步计数器.docx

上传人:b****7 文档编号:8974762 上传时间:2023-02-02 格式:DOCX 页数:35 大小:750.38KB
下载 相关 举报
0000000 用图形法设计模为12的同步计数器.docx_第1页
第1页 / 共35页
0000000 用图形法设计模为12的同步计数器.docx_第2页
第2页 / 共35页
0000000 用图形法设计模为12的同步计数器.docx_第3页
第3页 / 共35页
0000000 用图形法设计模为12的同步计数器.docx_第4页
第4页 / 共35页
0000000 用图形法设计模为12的同步计数器.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

0000000 用图形法设计模为12的同步计数器.docx

《0000000 用图形法设计模为12的同步计数器.docx》由会员分享,可在线阅读,更多相关《0000000 用图形法设计模为12的同步计数器.docx(35页珍藏版)》请在冰豆网上搜索。

0000000 用图形法设计模为12的同步计数器.docx

0000000用图形法设计模为12的同步计数器

 

EDA技术实用教程

----实验报告

 

专业班级:

学生姓名:

指导教师:

 

实验二用图形法设计模为12的同步计数器

一、实验目的:

掌握MAXPLUSⅡ的图形输入法和仿真过程

(1)掌握图形输入法

(2)熟悉仿真方法

(3)理解时序仿真

(4)掌握用图形编辑法实现组合逻辑电路设计思想。

二、实验内容:

用图形法设计模为12的同步计数器

三、实验设计:

1.实验原理

采用图形法来设计模为12的同步计数器,3个输入“INPUT”(分别为CLK,Clear,En),1个“74161计数器”芯片,1个“与非门”及1个“非门”,5个输出OUTPUT(分别为Cout,Q0,Q1,Q2,Q3),电路连接如图1所示

2.实验电路

图1.模为12的同步计数器

3.实验步骤

(1)在File菜单里面选择New打开新建文件类型对话框。

选择WaveformEditorFile项单击OK。

(2)在波形编辑器窗口的Name下单击鼠标右键,出现浮动的菜单,选择EnterNodesfromSNF...可以打开“从SNF文件输入观测点”的对话框。

(3)在Type区选择Input和Output,在默认的情况下是打开的,单击List按钮,可在AvailableNodes&Groups区看到设计文件中使用的输入/输出信号,单击=>按钮可以将这些信号选择到SelectedNodes&Groups区。

单击OK按钮,关闭对话框即可看到波形编辑窗口,将此波形文件保存为默认名。

波形编辑器窗口

Name的浮动菜单

列出输入/输出信号

波形文件中的输入输出信号

网格大小设置对话框

绘图网格设置菜单条

在此,默认的情况下,模拟的时间长短为1us。

此时在“File”菜单中选择“EndTime”来设置结束时间。

在模为12的计数器中,我们将信号“en”从头到尾,即从

0ns到1000ns赋值为‘1’。

选中信号“en”,单击“Name”区中的“en”信号,可看见“en”信号变为黑色,表示被选中;单击即可将“en”信号赋为‘1’

采用同样的方式可将信号“clear”从0ns到1000ns赋值为

“1”,为观察其清零的作用,将在240ns到300ns之间将其赋值为“0”(因为该信号低电平有效

将鼠标移到“clear”信号的240ns处按住鼠标左键并向右拖动鼠标300ns处,松开鼠标左键可以看到这段区域为黑色,被选中,单击工具条中的即可。

为了将时钟信号“clk”赋周期为40ns的时钟信号。

选中信号“clk”;设置信号周期。

单击工具条中的就可以打开下面的对话框,单击“OK”关闭就对话框即可生成所需的时钟。

时钟周期设置对话框

选择“File”中的“Save”存盘。

在此已完成波形输入:

建立好的输入波形图

运行仿真器,进行时序仿真

从“MAX+PlusII”菜单中选择“Simulator”,打开仿真器,单击按钮“Start”开始仿真。

仿真完毕之后,单击“OpenSCF”按钮打开刚才编辑的波形文件,就可以对仿真结果进行检查。

仿真器

为了观测方便,可将计数器输出Q3、Q2、Q1、Q0作为一个组来观测:

将鼠标移到“Name”区的Q3上,按住鼠标的左键并按住向下拖动鼠标之Q0处,松开左键,可选中信号Q3、Q2、Q1、Q0。

在选中区(黑色)上单击鼠标右键,打开一个浮动菜单,选择“EnterGroup”。

单击“Ok”关闭此对话框,可以得到下面的波形图文件。

现在观测就容易了。

以上步骤是实验指导书上给出的。

实验电路图形

 

实验过程截图

实验结果截图

BIN(二进制)

DEC(十二进制)

OCT(八进制)

HEX(十六进制)

实验结果分析

本次实验通过一个“74161同步计数器”来实现模可变的功能,通过在MAX+plusII软件中进行编译仿真,观察仿真结果,在初次接触此软件的同时,熟悉其功能操作,对实验结果及其相关步骤进行分析。

实验当中,首先在图形元器件的选择上,按照实验指导来进行,及修改相关参数和名称,连接图形,掌握方法,成功连接完成,进行保存并仿真。

实验结果中,分别显示了二进制,十二进制,八进制,十六进制的结果波形图,通过波形图,我们不难看出,在不同进制下,计数的结果是相同的,但显示的形式不同。

实验中,也遇到了一些问题。

比如说:

在图形保存中,选择“.gdf”格式,如果选择错误就会导致实验仿真错误。

在仿真前,要先建立工程,再进行编译,再导入图形中的输入项,,最后进行仿真,观察其结果。

实验心得

通过这次实验,学会了MAX+plusII软件的使用,并且在实验当中,能够巩固课本上关于模计数器的相关知识点,通过图形法来实现其设计的目的,熟悉仿真方法,理解时序仿真,掌握用图形编辑法实现组合逻辑电路设计思想。

 

实验三六位环行计数器设计

一、实验目的:

(1)熟悉图形输入编辑实现时序逻辑电路设计的过程。

(2)掌握环行计数器的设计思路。

二、实验内容:

通过分析六位环行计数器设计原理图,试写出该计数器的时钟方程、驱动方程和输出方程,并画出其状态转换图。

通过时序仿真结果验证分析的正确性和原理图设计的合理性。

实验设计

1.实验要求

(1)掌握图形逻辑输入法及编译的方法。

(2)理解仿真实现过程并分析仿真结果。

(3)掌握环行计数器的设计方思路。

2.实验原理

环行计数器是由移位寄存器加上一定的反馈电路构成的。

图形中,采用输入输出模块,JK触发器和两个D触发器,连接组成的六位环行计数器。

3.实验电路

4.仿真结果图

 

五、实验结果分析

本实验利用原理图编辑输入完成六位环行计数器的设计,在连接相关模块后,进行编译,建立工程,导入输入项(CLK时钟信号),再进行仿真,其结果如图所示。

从仿真图,我们可以看出,初始值设定在“000”,然后是“001”,“011”,“111”,“110”,“100”,最后又回到初始值。

继续循环下去。

实验心得

此次实验,通过对计数器的设计,学会使用触发器来实现功能的输出,掌握时序逻辑电路的设计方法,并能运用相关的元器件来进行图形的连接,掌握仿真的方法,掌握编译的方法,能对仿真结果进行分析。

并且在实验中,也能巩固书本上的相关知识点,加强学习的积极性,能够在不懂得实验相关点,及时的反映给老师,并且得到解决的方法,自主学习的能力能够得到提升。

 

实验六基于VHDL语言的分频器设计与实现

一、实验目的

1、进一步掌握VHDL语言的基本结构及设计的输入方法。

2、掌握VHDL基本逻辑电路的综合设计应用。

二、实验内容

1、设计并实现一个6分频的分频电路,要求其输出信号的占空比为50%。

请分析分频电路设计原理并编写VHDL语言程序,利用Max+PlusII开发软件对其进行编译和仿真。

6分频电路实现程序代码如下:

2、在实际数字电路设计过程中,往往需要得到占空比不是1:

1的分频时钟,方法是:

首先描述一个计数器电路,然后根据计数器电路的并行输出信号来决定输出时钟的高低电平。

请设计、编写VHDL语言程序实现分频后时钟信号的占空比为1:

15的16分频电路,并利用Max+PlusII开发软件对其进行编译和仿真。

三、实验设计

1.实验原理

在数字电路系统中,分频电路应用得十分广泛。

例如,工程人员常常使用分频电路来得到数字通信中的帧头信号、选通信号以及中断信号等。

因此,分频电路在数字电路系统的设计中也应该作为重要的基本电路来掌握,从而给今后的一些设计带来方便。

实验程序图

在Max+PlusII中的截图

3.仿真结果:

 

程序代码:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityclk_div6is

port(clk:

instd_logic;

clk_out:

outstd_logic);

endclk_div6;

architecturertlofclk_div6is

signalclk_temp:

std_logic;

begin

process(clk)

variablecounter:

integerrange0to15;

constantmd:

integer:

=2;

begin

ifclk'eventandclk='1'then

ifcounter=mdthen

counter:

=0;

clk_temp<=not

clk_temp;

else

counter:

=counter+1;

endif;

endif;

endprocess;

clk_out<=clk_temp;

endrtl;

 

四、实验结果分析

本实验利用VHDL语言设计分频电路,目的在于进一步掌握VHDL语言的基本结构及设计的输入方法,掌握VHDL基本逻辑电路的综合设计应用。

从结果分析来看,通过输入的时钟信号来控制输出的信号,通过相关元器件的连接,及程序的编译结果,来实现分频的目的。

五、实验心得

本次实验比较难以入手,很多程序段的编写必须要参考实验指导和专业教材来进行,而且在编写完成,在编译时,也会出现很多的错误,对于VHDL语言的基本结果,在课堂上没有完全掌握,所知道的也是很少的一部分知识,所以实验当中遇到了很多的困难。

所以最终的仿真结果也来不及更多的去检查正确性。

此次实验,我明白了,课本的知识对于实际操作来时有很大的帮助作用,还需更加巩固课本所学,来进一步达到实验的目的。

 

实验九汽车尾灯控制器设计与实现

一、实验目的

1、进一步掌握VHDL语言的基本结构及设计的输入方法。

2、掌握自顶向下设计方法。

3、掌握层次化设计混合编程方法。

二、实验原理

汽车尾灯控制器就是一个状态机的实例。

当汽车正常行驶时所有指示灯都不亮;当汽车向右转弯时,汽车右侧的指示灯RD1亮;当汽车向左侧转弯时,汽车左侧的指示灯LD1亮;当汽车刹车时,汽车右侧的指示灯RD2和汽车左侧的指示灯LD2同时亮;当汽车在夜间行驶时,汽车右侧的指示灯RD3和汽车左侧的指示灯LD3同时一直亮。

通过设置系统的输入信号:

系统时钟信号CLK,汽车左转弯控制信号LEFT,汽车右转弯控制信号RIGHT,刹车信号BRAKE,夜间行驶信号NIGHT和系统的输出信号:

汽车左侧3盏指示灯LD1、LD2、LD3和汽车右侧3盏指示灯RD1、RD2、RD3实现以上功能。

三、实验设计

1.实验内容

假设汽车尾部左右两侧各有3盏指示灯,其控制功能应包括:

(1)汽车正常行驶时指示灯都不亮。

(2)汽车右转弯时,右侧的一盏指示灯亮。

(3)汽车左转弯时,左侧的一盏指示灯亮。

(4)汽车刹车时,左右两侧的一盏指示灯同时亮。

(5)汽车在夜间行驶时,左右两侧的一盏指示灯同时一直亮,供照明使用。

根据系统设计要求,系统设计采用自顶向下的设计方法,顶层设计采用原理图设计方式,它由时钟分频模块、汽车尾灯主控模块、左边灯控制模块和右边灯控制模块四部分组成。

 

2.系统设计原理图如下图所示。

系统的输入信号包括:

系统时钟信号CLK,汽车左转弯控制信号LEFT,汽车右转弯控制信号RIGHT,刹车信号BRAKE,夜间行驶信号NIGHT。

系统的输出信号包括:

汽车左侧3盏指示灯LD1、LD2、LD3和汽车右侧3盏指示灯RD1、RD2、RD3。

系统工作原理为:

当汽车正常行驶时所有指示灯都不亮;当汽车向右转弯时,汽车右侧的指示灯RD1亮;当汽车向左转弯时,汽车左侧的指示灯LD1亮;当汽车刹车时,汽车右侧的指示灯RD2和汽车左侧的指示灯LD2同时亮;当汽车在夜间行驶时,汽车右侧的指示灯RD3和汽车左侧的指示灯LD3同时一直亮。

请分析汽车尾灯控制器实现过程,编写程序代码,结合已设计底层文件实现顶层元器件(采用混合编程)设计,使之组成完整系统。

3.对整个系统的仿真

对时序仿真图进行分析:

RIGHT,LEFT,NIGHT,BRAKE为输入信号,RIGHT为1表示右转,LEFT为1表示左转,NIGHT为1表示夜间行路,BRAKE为1表示刹车。

RD1,RD2,RD3为输出信号,表示汽车右侧的三盏灯。

LD1,LD2,LD3为输出信号,表示汽车左侧的三盏灯。

如图所示:

当RIGHT为1时,RD1输出为1表示右侧灯亮,当LEFT为1时,LD1为输出为1表示左侧灯亮,当NIGHT为1时,LD2,RD2输出均为1,表示左,右两侧各有一盏灯亮。

当BRAKE为1时,LD3,RD3输出均为1,表示左,右两侧各有一盏灯亮。

整个系统仿真图

3.程序代码

Libraryieee;

程序代码:

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

useieee.std_logic_arith.all;

ENTITYqicheIS

PORT(

light_cs:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

--大到小light69686766

fs:

instd_logic_vector(4downto0);

light:

OUTSTD_LOGIC_VECTOR(2DOWNTO0)

--灯70绿71黄72红

);

ENDqiche;

ARCHITECTUREoneOFqicheIS

beginprocess(fs)begin

iffs(0)='1'then----)汽车正常行驶时指示灯都不亮。

light<="000";

light_cs<="1111";

elsiffs

(1)='1'then-----汽车右转弯时,右侧的一盏指示灯亮

light<="010";

light_cs<="1110";

elsiffs

(2)='1'then-----汽车左转弯时,左侧的一盏灯亮

light<="010";

light_cs<="1011";

elsiffs(3)='1'then-----汽车刹车时,左右两侧的一盏指示灯

同时亮

light<="001";

light_cs<="1010";

elsiffs(4)='1'then-----汽车在夜间行驶时,左右两侧的一盏

指示灯同时一直亮,供照明使用。

light<="100";

light_cs<="1010";

endif;

endprocess;

endone

四、实验心得

本实验利用VHDL语言结合层次化设计混合编程思想设计实现汽车尾灯控制器,实验比较难做,其实验原理简单,实际操作的时候遇到很多困难。

在程序的编写时,有点困难。

最后的仿真结果,也不是很明白。

实验十彩灯控制器设计与实现

一、实验目的

1、进一步掌握VHDL语言的基本结构及设计的输入方法。

2、掌握VHDL语言中状态机的设计与实现。

3、掌握层次化设计混合编程方法和元件例化语句的使用方法。

二、实验原理

这次的彩灯设计采用的是分模块来完成的,包括分频器、计数器、选择器、彩灯控制器。

其中彩灯控制器是用来输出不同的花样,彩灯控制器的输出则是用一个32进制的计数器来控制,扬声器的输出时用不同的频率来控制,所以用了一个集成分频器来使输入的频率被分为几种不同的频率,不同频率的选择性的输出则是用一个4选一的选择器来控制。

基于上述的介绍本次的彩灯控制采用的模式6来进行显示。

三、实验内容

1、设计并实现一彩灯控制器,要有多种花型变化(至少设计4种);多种花型可以自动变换,循环往复;彩灯变换的快慢节拍可以选择;彩灯控制器具有清零开关。

2、根据系统设计要求,现设计一个具有6种花型循环变化的彩灯控制器。

系统设计采用自顶向下的设计方法,系统的整体组装设计原理图如图所示,它由时序控制模块和显示控制模块两部分组成。

整个系统有3个输入信号:

系统时钟信号CLK,系统清零信号CLR和控制彩灯节奏快慢的选择开关SPEED。

9个输出信号LED[8..0],分别用于模拟彩灯。

系统整体设计原理图如下图所示,请编写SX、XS程序代码,分析彩灯控制器实现过程,结合现已设计底层文件实现顶层元器件(采用混合编程或VHDL文本编辑输入法)系统的设计,使之组成一个完整系统。

 

系统整体组装设计原理图

3.模块设计

1)集成分频器模块

设计要求显示不同的彩灯的时候要伴随不同的音乐,所以设计分频器来用不同的频率控制不同的音乐输出。

模块说明:

Rst:

输入信号复位信号用来复位集成分频器的输出使输出为“0”,及没有音乐输出。

Clk:

输入信号模块的功能即为分频输入的频率信号。

Clk_4、clk_6、clk_8、clk_10:

输出信号即为分频模块对输入信号clk的分频,分别为1/4分频输出、1/6分频输出、1/8分频输出、1/10分频输出。

图3-2-1集成分频器

2)32进制计数器模块

32进制模块用来控制彩灯输出模块,即确定彩灯控制器的不同的输出。

Rst:

输入信号复位信号用来复位32进制使其输出为“00000”。

Clk:

输入信号用来给模块提供工作频率。

Count_out[4..0]:

输出信号即为32进制计数器的输出。

图3-2-232进制计数器

3)彩灯控制模块

彩灯控制模块用来直接控制彩灯的输出,使彩灯表现出不同的花样。

Rst:

输入信号使彩灯控制模块的输出为“00000000”,即让彩灯无输出。

Input[4..0]:

输入信号不同的输入使彩灯控制模块有不同的输出即彩灯显示出不同的花样。

Output[7..0]:

输出信号直接与彩灯相连来控制彩灯。

图3-2-3彩灯控制模块

4)4选1选择器模块

Rst:

输入信号复位信号使选择器的输出为“0”。

In1、in2、in3、in4:

输入信号接分频器的输出。

Inp[1..0]:

输入信号接4进制计数器的输出用来控制选择器的选择不同的输入选择不同的输出。

Output:

输出信号直接接扬声器即输出的是不同的频率来控制扬声器播放音乐。

图3-2-44选1选择器

5)4进制计数器模块

4进制计数器作为选择器的输入来控制选择器选择不同的频率作为输出控制扬声器工作。

Clk:

输入信号来为计数器提供工作频率。

Rst:

输入信号复位信号使计数器的输出为“00”。

图3-2-54进制计数器

4.程序及仿真结果

分频器模块:

--MAX+plusIIVHDLTemplate

--Clearableloadableenablablecounter

LIBRARYieee;

USEieee.std_logic_1164.all;

ENTITYfenpinqiIS

PORT

(clk,rst:

INstd_logic;

clk_10,clk_4,clk_6,clk_8:

OUTstd_logic

);

ENDfenpinqi;

ARCHITECTUREcdOFfenpinqiIS

begin

p1:

process(clk,rst)

variablea:

integerrange0to20;

begin

ifrst='1'then

clk_4<='0';-----复位信号控制部分

else

ifclk'eventandclk='1'then

ifa>=3then

a:

=0;

clk_4<='1';

else

a:

=a+1;

clk_4<='0';

endif;

endif;

endif;

endprocessp1;

p2:

process(clk,rst)

variableb:

integerrange0to20;

begin

ifrst='1'then

clk_6<='0';-----复位信号控制部分

else

ifclk'eventandclk='1'then

ifb>=5then

b:

=0;

clk_6<='1';

else

b:

=b+1;

clk_6<='0';

endif;

endif;

endif;

endprocessp2;

p3:

process(clk,rst)

variablec:

integerrange0to20;

begin

ifrst='1'then

clk_8<='0';-----复位信号控制部分

else

ifclk'eventandclk='1'then

ifc>=7then

c:

=0;

clk_8<='1';

else

c:

=c+1;

clk_8<='0';

endif;

endif;

endif;

endprocessp3;

p4:

process(clk,rst)

variabled:

integerrange0to20;

begin

ifrst='1'then

clk_10<='0';-----复位信号控制部分

else

ifclk'eventandclk='1'then

ifd>=9then

d:

=0;

clk_10<='1';

else

d:

=d+1;

clk_10<='0';

endif;

endif;

endif;

endprocessp4;

endcd;

 

4选1选择器:

LIBRARYieee;

USEieee.std_logic_1164.all;

ENTITYxzq4_1IS

PORT

rst:

instd_logic;

inp:

inintegerrange0to3;

in1,in2,in3,in4:

Instd_logic;

output:

OUTstd_logic

);

ENDxzq4_1;

ARCHITECTUREaOFxzq4_1IS

BEGIN

PROCESS(rst,inp)

BEGIN

if(rst='1')thenoutput<='0';

else

caseinpis

when0=>output<=in1;

when1=>output<=in2;

when2=>output<=in3;

when3=>output<=in4;

whenother

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

当前位置:首页 > 初中教育 > 学科竞赛

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

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