EDA技术基础实验报告
《EDA技术基础》
实验报告
学院:信息科学技术学院
专业:电子信息工程
指导教师:龙翔
完成日期:2013年12月
目录
实验一MAX-plusll 及开发系统使用 (3)
实验二高速四位乘法器设计 (6)
实验三秒表的设计 (9)
实验四序列检测器的设计 (13)
实验五数字频率计的设计 (18)
六实验总结 (20)
实验一
一:实验名称:
MAX-plusll 及开发系统使用
二:实验内容
1.利用MAX-plusII中的图形编辑器设计一半加器,进行编译、仿真,
并将其设置成为一元件。
2.建立一个更高的原理图设计层次,利用前面生成的半加器元件设计一个全加器,进行编译、仿真,并将其设置成为一个元件。
3.再建立一个更高的原理图设计层次,利用前面生成的半加器元件设计一个全加器,进行编译、仿真。
4.选择器件“Assign”“Device”“MAX7000S”“EPM7128SLC84-6”,并根据下载板上的标识对管脚进行配置。然后下载,进行硬件测试,检验结果是否正确。
三.实验程序
1).半加器图
2)全加器图
3)四位全加器
四:仿真图
1).半加器仿真图
2).全加器仿真图
3).四位全加器仿真图
实验二
一:实验名称
高速四位乘法器设计
二: 实验内容
1.利用MAX-plusⅡ中的图形编辑器设计1-4的二进制乘法器,进行编译、仿真,并将其设置成为一元件,命名为and14。
2.建立一个更高得原理图设计层次,利用前面生成的1-4的二进制乘法器和调用库中的74283元件设计一高速4位乘法器。
三:实验程序
1.
2.
四:仿真图
实验三
一:实验名称
秒表的设计
二:实验内容
(一)、实验步骤
1、采用自顶向下的设计方法,首先将系统分块;
2、设计元件,即逻辑块;
3、一级一级向上进行元件例化(本实验只需例化一次即可),设计顶层文件。
(二)、实验程序设计原理
实验程序如三所示,其中输入信号分别为使能信号ENA、清零信号CLR、时钟信号CLK,输出信号有秒针信号CA和分针信号CB。实验原理为通过始终信号,控制两个计数器的计数来实现的,当始终上升沿到来时,对信号CAI进行计数,当CAI计数达到59,则产生一个进位1,从而对信号CBI进行计数,即信号CAI每次达到59就对信号CBI进行计数一次,同时下个时钟上升沿到来时,信号CAI复位为0.当信号CBI达到59时,则下个时钟上升沿到
来时,信号CBI复位为0。
三.实验程序
LIBRARY IEEE;
USE MS IS
PORT(CLK,CLR,ENA:IN STD_LOGIC;
CA,CB:BUFFER STD_LOGIC_VECTOR(5 DOWNTO 0)); END ENTITY MS;
ARCHITECTURE ARE OF MS IS
SIGNAL CAI:STD_LOGIC_VECTOR(5 DOWNTO 0);
SIGNAL CBI:STD_LOGIC_VECTOR(5 DOWNTO 0); BEGIN
PROCESS (CLK,CLR,ENA) IS
BEGIN
IF CLR='1' THEN
CAI<="000000";
CBI<="000000";
ELSIF CLK'EVENT AND CLK='1' THEN
IF ENA='1' THEN
IF CAI="111011" THEN CAI<="000000";CBI<=CBI+1;
IF CBI="111011" THEN CBI<="000000";
ELSE CBI<=CBI+1;
END IF;
ELSE CAI<=CAI+1;
END IF;
END IF;
END IF;
END PROCESS;
CA<=CAI;
CB<=CBI;
END ARCHITECTURE ARE
四:仿真图
实验四
一:实验名称
序列检测器的设计
二:实验内容
(一)、实验步骤
1、序列检测器的基本工作过程:
序列检测器用于检测一组或多组由二进制码组成的脉冲序列信号,在数字通信中有着广泛的应用。当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置的对应码相同。在检测过程中,任何一位不相等都将回到初始状态重新开始检测。方框图如下:
2、状态机的基本设计思想:
在状态连续变化的数字系统设计中,采用状态机的设计思想有利于提高设计效率,增加程序的可读性,减少错误的发生几率。同时,状态机的设计方法也是数字系统中一种最常用的设计方法。一般来说,标准状态机可以分为摩尔(Moore)机和米立(Mealy)机两种。在摩尔机中,其输出仅仅是当前状态值的函数,并且仅在时钟上升沿到来时才发生变化。米立机的输出则是当前状态值、当前输出值和当前输入值的函数。本实验要从一串二进制码中检测出一个已预置的8 位二进制码,每增加一位二进制码相当于增加一个状态,再加上一个初始态,用9个状态可以实现。其过程如下:
注意:此图作为参考,检测不同的二进制码其过程不同!
3、实验内容:
写出状态机的源程序,编译后进行仿真,看结果是否正确。
(二)、实验程序原理
实验程序如三所示,其中RESET为复位输入信号,CLK为时钟输入信号,INS为输入信号,OUTS为输出信号,DATAOUT为状态输出信号。实验原理为当时钟上升沿每到来一次,INS输入一个信号,如果INS依次输入“”时,OUTS就输出一个‘1’信号,否则其他情况OUTS都是输出‘0’信号。而DATAOUT则根据输
入信号INS来输出一个状态值。
三.实验程序
LIBRARY IEEE;
USE ZT IS
PORT(CLK,INS,RESET:IN STD_LOGIC;
OUTS:OUT STD_LOGIC;
DATAOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END ENTITY ZT;
ARCHITECTURE ART OF ZT IS
TYPE STATE_TYPE IS(S0,S1,S2,S3,S4,S5,S6,S7,S8);
SIGNAL STATE:STATE_TYPE;
BEGIN
PROCESS(CLK,RESET,INS) IS
BEGIN
IF RESET='1' THEN
STATE<=S0;
ELSIF CLK'EVENT AND CLK='1' THEN
CASE STATE IS
WHEN S0=>IF INS='1' THEN STATE<=S1;ELSE STATE<=S0;END IF;
WHEN S1=>IF INS='0' THEN STATE<=S2;ELSE STATE<=S1;END
IF;
WHEN S2=>IF INS='0' THEN STATE<=S3;ELSE STATE<=S1;END IF;
WHEN S3=>IF INS='0' THEN STATE<=S4;ELSE STATE<=S1;END IF;
WHEN S4=>IF INS='1' THEN STATE<=S5;ELSE STATE<=S0;END IF;
WHEN S5=>IF INS='1' THEN STATE<=S6;ELSE STATE<=S2;END IF;
WHEN S6=>IF INS='1' THEN STATE<=S7;ELSE STATE<=S2;END IF;
WHEN S7=>IF INS='0' THEN STATE<=S8;ELSE STATE<=S1;END IF;
WHEN S8=>STATE<=S0;
WHEN OTHERS=>STATE<=S0;
END CASE;
END IF;
END PROCESS;
PROCESS(STATE)
BEGIN
CASE STATE IS
WHEN S0=>DATAOUT<="00000000";OUTS<='0';
WHEN S1=>DATAOUT<="00000001";OUTS<='0';
WHEN S2=>DATAOUT<="00000010";OUTS<='0';
WHEN S3=>DATAOUT<="00000100";OUTS<='0';
WHEN S4=>DATAOUT<="00001000";OUTS<='0';
WHEN S5=>DATAOUT<="00010001";OUTS<='0';
WHEN S6=>DATAOUT<="00100011";OUTS<='0';
WHEN S7=>DATAOUT<="01000111";OUTS<='0';
WHEN S8=>DATAOUT<="";OUTS<='1';
WHEN OTHERS=>DATAOUT<="00000000";
END CASE;
END PROCESS;
END ARCHITECTURE ART;
四:仿真图
实验五
一:实验名称
数字频率计的设计
二:实验内容
(一)、实验步骤
1、测频原理
若某一信号在T秒时间里重复变化了N 次,则根据频率的定义可知该信号的频率fs 为:fs=N/T 通常测量时间T取1秒或它的十进制时间。频率计方框图如下:
(1)、时基T 产生电路:
提供准确的计数时间T。晶振产生一个振荡频率稳定的脉冲,通过分频整形、门控双稳后,产生所需宽度的基准时间T的脉冲,又称闸门时间脉冲。注意:分频器一般采用计数器完成,计数器的模即为分频比。
(2)、计数脉冲形成电路:
将被测信号变换为可计数的窄脉冲,其输出受闸门脉冲的控制。
(3)、计数显示电路:
对被测信号进行计数,显示被测信号的频率。计数器一般采用多位10 进制计数器;控制逻辑电路控制计数的工作程序:准备——计数——显示——复位——准备下一次测量。
2、具体实现:
(1)、测频控制逻辑电路(以1 秒为例)
A)产生一个1秒脉宽的周期信号;
B)对计数器的每一位计数使能进行控制;
C)完成下一次测量前的计数器复位;
一种可能的时序关系:
a) 10 进制计数器
要求具有计数使能端CNTEN、复位端CLR、进位输出端CO。
3、元件例化图(方框图):
(二)、实验程序原理
实验程序如三所示,输入信号为复位信号CLR、输入信号CLK和CLK1,其中CLK 为时间计数,一个周期为1s,而CLK1为脉冲计数,一个周期为10ms。当信号SSI为‘0’时,信号CQI随着时钟信号CLK1的上升沿到来开始计数,没来一次上升沿计数一次。而当时钟信号CLK下降沿到来时,信号SSI变化为‘1’,则信号CQI停止计数。从而在1s时刻读取输出信号CQ的值,即为脉冲信号的频率。
三.实验程序
LIBRARY IEEE;
USE PLJ IS
PORT(CLK,CLR,CLK1:IN STD_LOGIC;
SS:OUT STD_LOGIC;
CQ:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END ENTITY PLJ;
ARCHITECTURE ART OF PLJ IS
SIGNAL CQI:STD_LOGIC_VECTOR(6 DOWNTO 0);
SIGNAL SSI:STD_LOGIC;
BEGIN
PROCESS(CLK,CLR) IS
BEGIN
IF CLR='1' THEN SSI<='0';
ELSIF CLK'EVENT AND CLK='0' THEN SSI<='1';
END IF;
END PROCESS;
PROCESS(CLR,CLK1) IS
BEGIN