文档库 最新最全的文档下载
当前位置:文档库 › 关于状态机时序与功能仿真中存在的问题

关于状态机时序与功能仿真中存在的问题

关于状态机时序与功能仿真中存在的问题
关于状态机时序与功能仿真中存在的问题

关于状态机时序与功能仿真中存在的问题

下图是一个状态机的状态转移图(黄色圆圈中的数字为该状态下的输出,曲线上方的等式为状态转移条件)

图1 由s0、s1、s2、s3四种状态构成的状态机

下面的代码实现了上图所示的状态机(出自《VHDL经典实例》——黄任),

library ieee;

use ieee.std_logic_1164.all;

entity moore is

port (

reset :in std_logic;

clock : in std_logic;

din : in std_logic;

dout : out std_logic_vector(2 downto 0)

);

end;

architecture mooremachine of moore is

type state_type is (s0,s1,s2,s3);

signal presentstate:state_type;

signal nextstate :state_type;

begin

state_reg:

process(reset,clock) /*综合成时序逻辑,很可能是一个D触发器*/ begin

if reset='1' then /*这里的nextstate信号即是该D触发器的输入,

presentstate<=s0; presentstate信号即是D触发器的输出*/ elsif rising_edge(clock) then

presentstate<=nextstate;

end if;

end process;

change_state:

process(presentstate,din) /*综合成组合逻辑,输出即是nextstate信号,

故存在延时*/

begin

case presentstate is

when s0=>

if din='1' then

nextstate<=s1;

else

nextstate<=s0;

end if;

dout<="001";

when s1=>

if din='1' then

nextstate<=s2;

else

nextstate<=s1;

end if;

dout<="011";

when s2=>

if din='1' then

nextstate<=s3;

else

nextstate<=s2;

end if;

dout<="101";

when s3=>

if din='1' then

nextstate<=s0;

else

nextstate<=s1;

end if;

dout<="111";

end case;

end process;

end;

将上面的代码在quartus 6.0中编译后可以得到一些它的功能仿真图。(设定复位后presentstate的初始状态为:s0 )

首先看如下输入波形时的功能仿真图形,其结果很容易分析,与预期的一致。

图2 功能仿真图形

再看一种特殊输入波形条件下的功能仿真图形,通过特殊情形来寻找问题

图3 功能仿真图形

从图中可以清楚的看到,在时钟的上升沿时刻,因为功能仿真时不考虑由presentstate 和din构成的组合逻辑的延迟。也就是说:两者构成的组合逻辑的输出结果,即nextstate 信号在时钟clock的上升沿时刻,恰好也是din的下降沿时刻,din和presentstate组合逻辑的结果始终是s0,最终导致了状态机presentstate保持s0态! 这也是很容易理解的。

接着看它的时序仿真图,这下就有问题了!

图4 时序仿真图型

很明显,用quartus II 在进行时序仿真时,考虑了组合逻辑延迟,建立时间、保持时间等。可是我的疑惑在于,在图中50ns处,clock与din同时出现跳变。din与presentstate组合逻辑的结果(即nextstate)应该仍是s0状态,然后被同时刻出现的clock上跳沿采样,那么所得的结果应该还是s0才对呀。可图中却在一段时延后进入了s1态。这一点让我非常疑惑,百思不得其解。到底是怎么一回事了???

实验五 时序逻辑电路实验报告 计数器

实验五 时序逻辑电路实验 一、实验目的 1.掌握同步计数器设计方法与测试方法。 2.掌握常用中规模集成计数器的逻辑功能和使用方法。 二、实验设备 1.直流稳压电源、信号源、示波器、万用表、面包板 2.74LS190、74LS393、74LS04 3.1kΩ电阻、发光二极管 三、实验原理 1.计数器 计数器不仅可用来计数,也可用于分频、定时和数字运算。在实际工程应用中,一般很少使用小规模的触发器组成计数器,而是直接选用中规模集成计数器。 2.(1) 四位二进制(十六进制)计数器74LS161(74LS163) 74LSl61是同步置数、异步清零的4位二进制加法计数器,其功能表见表5.1。 74LSl63是同步置数、同步清零的4位二进制加法计数器。除清零为同步外,其他功能与74LSl61相同。二者的外部引脚图也相同,如图5.1所示。 表5.1 74LSl61(74LS163)的功能表 3.集成计数器的应用——实现任意M进制计数器 一般情况任意M进制计数器的结构分为3类,第一类是由触发器构成的简单计数器。第二类是由集成二进制计数器构成计数器。第三类是由移位寄存器构成的移位寄存型计数器。第一类,可利用时序逻辑电路的设计方法步骤进行设计。第二类,当计数器的模M较小时用一片集成计数器即可以实现,当M较大时,可通过多片计数器级联实现。两种实现方法:反馈置数法和反馈清零法。第三类,是由移位寄存器构成的移位寄存型计数器。 4.实验电路: 十进制计数器

六进制扭环计数器 具有方波输出的六分频电路 图5.1 74LS161(74LS163)外部引脚图 四、实验内容及步骤 1.集成计数器实验 (1)按电路原理图使用中规模集成计数器74LS163和与非门74LS00,连接成一个同步置数或同步清零十进制计数器,并将输出连接至数码管或发光二极管。然后使用单次脉冲作为触发输入,观察数码管或发光二极管的变化,记录得到电路计数过程和状态的转换规律。 (2)根据电路图,首先用D触发器74LS7474构成一个不能自启的六进制扭环形计数器,同样将输出连接至数码管或发光二极管。然后使用单次脉冲作为触发输入,观察数码管或发光二极管的变化,记录得到电路计数过程和状态的转换规律。注意观察电路是否能自启,若不能自启,则将电路置位有效状态。接下来再用D触发器74LS7474构成一个能自启的六进制扭环形计数器,重复上述操作。 2.分频实验 同步置数法 同步清零法

实验五--时序逻辑电路实验报告

实验五时序逻辑电路(计数器和寄存器)-实验报告 一、实验目的 1.掌握同步计数器设计方法与测试方法。 2.掌握常用中规模集成计数器的逻辑功能和使用方法。 二、实验设备 设备:THHD-2型数字电子计数实验箱、示波器、信号源 器件:74LS163、74LS00、74LS20等。 三、实验原理和实验电路 1.计数器 计数器不仅可用来计数,也可用于分频、定时和数字运算。在实际工程应用中,一般很少使用小规模的触发器组成计数器,而是直接选用中规模集成计数器。 2.(1) 四位二进制(十六进制)计数器74LS161(74LS163) 74LSl61是同步置数、异步清零的4位二进制加法计数器,其功能表见表5.1。 74LSl63是同步置数、同步清零的4位二进制加法计数器。除清零为同步外,其他功能与74LSl61相同。二者的外部引脚图也相同,如图5.1所示。 表5.1 74LSl61(74LS163)的功能表 清零预置使能时钟预置数据输入输出 工作模式R D LD EP ET CP A B C D Q A Q B Q C Q D 0 ××××()××××0 0 0 0 异步清零 1 0 ××D A D B D C D D D A D B D C D D同步置数 1 1 0 ××××××保持数据保持 1 1 ×0 ×××××保持数据保持 1 1 1 1 ××××计数加1计数3.集成计数器的应用——实现任意M进制计数器 一般情况任意M进制计数器的结构分为3类,第一类是由触发器构成的简单计数器。第二类是由集成二进制计数器构成计数器。第三类是由移位寄存器构成的移位寄存型计数器。第一类,可利用时序逻辑电路的设计方法步骤进行设计。第二类,当计数器的模M较小时用一片集成计数器即可以实现,当M较大时,可通过多片计数器级联实现。两种实现方法:反馈置数法和反馈清零法。第三类,是由移位寄存器构成的移位寄存型计数器。 4.实验电路: 十进制计数器 同步清零法 同步置数法

时序计算和Cadence 仿真结果的运用

时序计算和Cadence仿真结果的运用 中兴通讯康讯研究所EDA设计部余昌盛刘忠亮 摘要:本文通过对源同步时序公式的推导,结合对SPECCTRAQuest时序仿真方法的分析,推导出了使用SPECCTRAQuest进行时序仿真时的计算公式,并对公式的使用进行了说明。 关键词:时序仿真源同步时序电路时序公式 一.前言 通常我们在时序仿真中,首先通过时序计算公式得到数据信号与时钟信号的理论关系,在Cadence仿真中,我们也获得了一系列的仿真结果,怎样把仿真结果正确的运用到公式中,仿真结果的具体含义是什么,是我们正确使用Cadence仿真工具的关键。下面对时序计算公式和仿真结果进行详细分析。 二.时序关系的计算 电路设计中的时序计算,就是根据信号驱动器件的输出信号与时钟的关系(Tco——时钟到数据输出有效时间)和信号与时钟在PCB上的传输时间(Tflytime)同时考虑信号驱动的负载效应、时钟的抖动(Tjitter)、共同时钟的相位偏移(Tskew)等,从而在接收端满足接收器件的建立时间(Tsetup)和保持时间(Thold)要求。通过这些参数,我们可以推导出满足建立时间和保持时间的计算公式。 时序电路根据时钟的同步方式的不同,通常分为源同步时序电路(Source-synchronous timing)和共同时钟同步电路(common-clock timing)。这两者在时序分析方法上是类似的,下面以源同步电路来说明。 源同步时序电路也就是同步时钟由发送数据或接收数据的芯片提供。图1中,时钟信号是由CPU驱动到SDRAM方向的单向时钟,数据线Data是双向的。 图1

图2是信号由CPU 向SDRAM 驱动时的时序图,也就是数据与时钟的传输方向相同时 的情况。 Tsetup ’ Thold ’ CPU CLK OUT SDRAM CLK IN CPU Signals OUT SDRAM Signals IN Tco_min Tco_max T ft_clk T ft_data T cycle SDRAM ’S inputs Setup time SDRAM ’S inputs Hold time 图2 图中参数解释如下: ■ Tft_clk :时钟信号在PCB 板上的传输时间; ■ Tft_data :数据信号在PCB 板上的传输时间; ■ Tcycle :时钟周期 ■ Tsetup’:数据到达接收缓冲器端口时实际的建立时间; ■ Thold’:数据到达接收缓冲器端口时实际的保持时间; ■ Tco_max/Tco_min :时钟到数据的输出有效时间。 由图2的时序图,我们可以推导出,为了满足接收芯片的Tsetup 和Thold 时序要求,即 Tsetup’>Tsetup 和Thold’>Thold ,所以Tft_clk 和Tft_data 应满足如下等式: Tft_data_min > Thold – Tco_min + Tft_clk (公式1) Tft_data_max < Tcycle - Tsetup – Tco_max + Tft_clk (公式2) 当信号与时钟传输方向相反时,也就是图1中数据由SDRAM 向CPU 芯片驱动时,可 以推导出类似的公式: Tft_data_min > Thold – Tco_min - Tft_clk (公式3) Tft_data_max < Tcycle - Tsetup – Tco_max - Tft_clk (公式4) 如果我们把时钟的传输延时Tft_clk 看成是一个带符号的数,当时钟的驱动方向与数据 驱动方向相同时,定义Tft_clk 为正数,当时钟驱动方向与数据驱动方向相反时,定义Tft_clk 为负数,则公式3和公式4可以统一到公式1和公式2中。 三.Cadence 的时序仿真 在上面推导出了时序的计算公式, 在公式中用到了器件手册中的Tco 参数,器件手册中Tco 参数的获得,实际上是在某一种测试条件下的测量值,而在实际使用上,驱动器的实际 负载并不是手册上给出的负载条件,因此,我们有必要使用一种工具仿真在实际负载条件下 的信号延时。Cadence 提供了这种工具,它通过仿真提供了实际负载条件下和测试负载条件 下的延时相对值。 我们先来回顾一下CADENCE 的仿真报告形式。仿真报告中涉及到三个参数:FTSmode 、

实验五 时序电路的分析

实验五 时序逻辑电路的分析 一、实验目的 1.进一步研究和学习异步计数器的结构及应用。 2.熟悉双向移位寄存器的工作原理及使用方法。 二、实验仪器及器件 1.数字电路实验仪; 2.器件: 74LS112(双下降沿JK 触发器) 2片; 74LS74(双上升沿D 触发器) 2片; 74LS00(四2输入与非门) 1片; 74LS54(4路2-3-3-2输入与或非门) 4片。 三、预习要求 1.复习异步计数器的分类及功能。 2.复习双向移位寄存器的工作原理。 3.复习寄存器的功能测试。 四、实验内容与步骤 1.用双JK 触发器74LS112构成的异步二进制计数器。 (1) 分析图5.1所示逻辑图,按图5.1接线。其中: Q 3 、Q 2、Q 1、Q 0接输出显示灯,D R 为电平开关,CP 为单脉冲输入。 (2)置D R 为低电平,测试并记录的Q 3 、Q 2、Q 1、Q 0状态。 Q 3 = Q 2= Q 1= Q 0= (3) D R 为高电平,由时钟输入单脉冲,测试并记录Q 3 、Q 2、Q 1、Q 0的状态,并填入表5.1。 图5.1 异步二进制计数器逻辑电路图 表

2.移位寄存器是具有移位功能的寄存器,寄存器中的代码能够在移位脉冲的作用下依次左移或右移。既能实现左移功能又能实现右移功能的寄存器称为双向移位寄存器,只需改变其控制信号便可以实现双向移位要求。图5.2所示为一个由D 触发器组成的双向移位寄存器。 (1)分析图5.2所示双向移位寄存器逻辑电路。 (2)根据图5.2所示逻辑电路图进行连线。 其中:Q 3~Q 0接输出显示灯; D SR 、D SL 、M 、D R 接电平开关; CP 接单脉冲输入。 (3)测试 首先置D R 为低电平给电路清“0”,使Q 3Q 2Q 1Q 0=0000,然后置D R 为高电平,通过电平开关设置模式控制端M ,M=1为右移寄存器,M=0为左移寄存器,由时钟CP 输入单脉冲,从右(左)移串行输入端D SR (D SL )输入数据“1011”,并将测试结果填入表5.2、表5.3。 图5.2 D 触发器组成的双向移位寄存器逻辑电路图 表5.2 表5.3 五、实验报告 1.写出逻辑电路的激励方程及状态方程,并分析其逻辑功能。 2.在实验报告中填写相应记录表中的实验值。

Modelsim的功能仿真和时序仿真

FPGA 设计流程包括设计输入,仿真,综合,生成,板级验证等很多阶段。在整个设计流程中,完成设计输入并成功进行编译仅能说明设计符合一定的语法规范,并不能说明设计功能的正确性,这时就需要通过仿真对设计进行验证。在FPGA 设计中,仿真一般分为功能仿真(前仿真)和时序仿真(后仿真)。功能仿真又叫逻辑仿真,是指在不考虑器件延时和布线延时的理想情况下对源代码进行逻辑功能的验证;而时序仿真是在布局布线后进行,它与特定的器件有关,又包含了器件和布线的延时信息,主要验证程序在目标器件中的时序关系。在有些开发环境中,如Xilinx ISE 中,除了上述的两种基本仿真外,还包括综合后仿真,转换(post-translate)仿真,映射后(post-map)仿真等,这样做完每一步都可进行仿真验证,从而保证设计的正确性。 ModelSim 是Mentor Graphics 子公司MentorTechnology 的产品,是当今最通用的FPGA 仿真器之一。ModelSim 功能强大,它支持FPGA 设计的各个阶段的仿真,不仅支持VHDL 仿真,Verilog仿真,而且支持VHDL 和Verilog 混合仿真。它不仅能做仿真,还能够对程序进行调试,测试代码覆盖率,对波形进行比较等。ModelSim 有很多版本,像ModelSim/SE 是首要版本,除此之外还有ModelSim/XE 和ModelSim/AE,分别是为Xilinx 公司和Altera 公司提供的OEM 版,其中已包含各公司的库文件,故用特定公司OEM 版进行仿真时就不需编译该公司的库了。 用ModelSim 进行功能仿真 进行功能仿真首先要检查设计的语法是否正确;其次检查代码是否达到设计的功能要求。下文主要介绍仿真步骤和测试激励的加载。 仿真步骤 (1)建立库并映射库到物理目录 因为用ModelSim 进行仿真是建立在仿真库的基础上的(此处进行的是功能仿真,因而不用编译特定厂商的库),所以首先要建立库并把库映射到实际的物理路径。通常用户编译的文件都放在work库中,所以必须先建立work 库。有两种方法建立并映射库,第一种方法是通过图形界面,在菜单Design→Create a New Library 弹出对话框,如图1 所示。在Library Name 中输入work,如果建立其它库,可以输入其它名字。Library Map to 是映射的物理路径。第二种方法是用命令行的形式,建立库用ModelSim>vlib<库名>,映射库用ModelSim> vmap ,如建立并映射库work,就可以在ModelSim 主窗口命令提示符下输入 vlib work vmap work work (2)编译源代码 该步骤主要检查源文件的语法错误。实现方法有两种,一是通过菜单Design→Compile,出现选择源文件对话框,选择要编译的源文件,编译即可;二是通过命令行方式,这一步对于VHDL 和Verilog 所使用的命令是不一样的,对于VHDL 代码用vcom-work.vhd.vhd ,

实验三时序逻辑电路

实验三时序逻辑电路 学习目标: 1、掌握时序逻辑电路的一般设计过程 2、掌握时序逻辑电路的时延分析方法,了解时序电路对时钟信号相关参数的基本要求 3、掌握时序逻辑电路的基本调试方法 4、熟练使用示波器和逻辑分析仪观察波形图 实验内容: 1、广告流水灯(第 9 周课内验收)用触发器、组合函数器件和门电路设计一个广告流水灯,该流水灯由 8 个 LED 组成,工作时始终为 1 暗 7 亮,且这一个暗灯循环右移。 (1) 写出设计过程,画出设计的逻辑电路图,按图搭接电路 (2) 将单脉冲加到系统时钟端,静态验证实验电路 (3) 将 TTL 连续脉冲信号加到系统时钟端,用示波器观察并记录时钟脉冲 CP、触发器的输出端 Q2、Q1、 Q0 和 8 个 LED 上的波形。 2、序列发生器(第 10 周课内实物验收计数器方案)分别用 MSI 计数器和移位寄存器设计一个具有自启动功能的 01011 序列信号发生器 (1) 写出设计过程,画出电路逻辑图 (2) 搭接电路,并用单脉冲静态验证实验结果 (3) 加入 TTL 连续脉冲,用示波器观察观察并记录时钟脉冲 CLK、序列输出端的波形。 3、4 位并行输入-串行输出曼切斯特编码电路(第10周课内验收,基础要求占70%,扩展要求占30%) 在电信与数据存储中, 曼彻斯特编码(Manchester coding),又称自同步码、相位编码(phase encoding,PE),它能够用信号的变化来保持发送设备和接收设备之间的同步,在以太网中,被物理层使用来编码一个同步位流的时钟和数据。曼彻斯特编码用电压的变化来分辨 0 和 1,从高电平到低电平的跳变代表 0,而从低电平到高电平的跳变代表 1。信号的保持不会超过一个比特位的时间间隔。即使是 0 或 1 的序列,信号也将在每个时间间隔的中间发生跳变。这种跳变将允许接收设备的时钟与发送设备的时钟保持一致,图 3.1 为曼切斯特编码的例子。 设计一个电路,它能自动加载 4 位并行数据,并将这4位数据逐个串行输出(高位在前),每个串行输出位都被编码成曼切斯特码,当 4 位数据全部传输完成后,重新加载新数据,继续传输,如图 3.2 所示。

时序计算和Cadence仿真结果的运用

字体大小: 小中大作者:余昌盛刘忠亮来源:日期:2007-06-25 点击:558 摘要:本文通过对源同步时序公式的推导,结合对SPECCTRAQuest时序仿真方法的分析,推导出了使用SPECCTRAQuest进行时序仿真时的计算公式,并对公式的使用进行了说明。 一、前言 通常我们在时序仿真中,首先通过时序计算公式得到数据信号与时钟信号的理论关系,在cadence仿真中,我们也获得了一系列的仿真结果,怎样把仿真结果正确的运用到公式中,仿真结果的具体含义是什么,是我们正确使用Cadence仿真工具的关键。下面对时序计算公式和仿真结果进行详细分析。 二.时序关系的计算 电路设计中的时序计算,就是根据信号驱动器件的输出信号与时钟的关系(Tco——时钟到数据输出有效时间)和信号与时钟在PCB上的传输时间(Tflytime)同时考虑信号驱动的负载效应、时钟的抖动(Tiitter)、共同时钟的相位偏移(Tskew)等,从而在接收端满足接收器件的建立时间(Tsetup)和保持时间(Thold)要求。通过这些参数,我们可以推导出满足建立时间和保持时间的计算公式。 时序电路根据时钟的同步方式的不同,通常分为源同步时序电路(Source-synchronous timing)和共同时钟同步电路(common-clock timing)。这两者在时序分析方法上是类似的,下面以源同步电路来说明。 源同步时序电路也就是同步时钟由发送数据或接收数据的芯片提供。图1中,时钟信号是由CPU驱动到SDRAM方向的单向时钟,数据线Data是双向的。 图2是信号由CPU向SDRAM驱动时的时序图,也就是数据与时钟的传输方向相同时的情况。

实验五时序逻辑电路实验报告

实验五时序逻辑电路(计数器和寄存器)-实验报告一、实验目的 1掌握同步计数器设计方法与测试方法。 2 ?掌握常用中规模集成计数器的逻辑功能和使用方法。 二、实验设备 设备:THHD-2型数字电子计数实验箱、示波器、信号源 器件:74LS163、74LS00、74LS20 等。 三、实验原理和实验电路 1计数器 计数器不仅可用来计数,也可用于分频、定时和数字运算。在实际工程应用中,一般很少使用小规模的触发器组成计数器,而是直接选用中规模集成计数器。 2. (1)四位二进制(十六进制)计数器74LS161 (74LS163) 74LS161是同步置数、异步清零的4位二进制加法计数器,其功能表见表。 74LS163是同步置数、同步清零的4位二进制加法计数器。除清零为同步外,其他功能与74LS161相同。二者的外部引脚图也相同,如图所示。 3.集成计数器的应用一一实现任意M进制计数器

Eft CR IK rh th Ih ET 7-I1A C1M /( 制扭环计数 同步清零法器 同步置数法 般情况任意M 进制计数器的结构分为 3类,第一类是由触发器构成的简单计数器。 第 二类是 由集成二进制计数器构成计数器。第三类是由移位寄存器构成的移位寄存型计数器。 第一类,可利用时序逻辑电路的设计方法步骤进行设计。 第二类,当计数器的模 M 较小时用 一片集成计数器即可以实现,当 M 较大时,可通过多片计数器级联实现。两种实现方法:反 馈置数法和反馈清零法。第三类,是由移位寄存器构成的移位寄存型计数器。 4?实验电路: 十进制计数器 1

图74LS161 (74LS163)外部引脚图 四、实验内容及步骤 1 .集成计数器实验 (1)按电路原理图使用中规模集成计数器74LS163和与非门74LS00,连接成一个同步置数或同步清零十进制计数器,并将输出连接至数码管或发光二极管。然后使用单次脉冲作为触发输入,观察数码管或发光二极管的变化,记录得到电路计数过程和状态的转换规律。 (2)根据电路图,首先用D触发器74LS7474构成一个不能自启的六进制扭环形计数器,同样将输出连接至数码管或发光二极管。然后使用单次脉冲作为触发输入,观察数码管或发光二 极管的变化,记录得到电路计数过程和状态的转换规律。注意观察电路是否能自启,若不能自启,则将电路置位有效状态。接下来再用D触发器74LS7474构成一个能自启的六进制扭环 形计数器,重复上述操作。 2?分频实验 依据实验原理图用74LS163及74LS00组成一个具有方波输出的六分频电路。选择适当时钟输入方式及频率(CP接连续波脉冲),用双踪示波器观察并记录时钟与分频输出信号的时序波形。 五、实验结果及数据分析 1 .集成计数实验同步清零和同步置数的十进制加一计数器状态转换过程分别如下所示: 0000 : 0001 : 0010 : 0011 ; 0100 爲00*卄庇爲爲卄yh 六进制扭环形计数器的状态转换过程如下:

用ModelSimSE进行功能仿真和时序仿真的方法(ALTERA篇)

用ModelSimSE进行 功能仿真和时序仿真的方法 (ALTERA篇) 黄俊 April 2007

用ModelSim SE进行功能仿真和时序仿真的方法 (ALTERA篇) 软件准备 (1) QuartusII,本文截图是QuartusII 6.1界面的。我个人认为,如果是开发StratixII或CycloneII或MAXII,用QuartusII6.0+SP1+SP2比较稳定。 (2) ModelSim SE. ALTERA仿真库要已经装好,安装仿真库的笔记已记录于《在ModelSimSE中添加ALTERA仿真库的详细步骤》中。我电脑上装的是ModelSim SE 6.1b。 例子程序的制作 先在Quartus II里生成一个例子程序,以方便介绍三种仿真的方法。步骤如下: 1、新建一个工程(Project),工程名取lpm_shift, 器件选CycloneII EP2C5Q208C, 第三方 的工具暂时都不选。 2、菜单栏上Tools?MegaWizard Plug-In Manager, 点Next,在storage中选 LPM_SHIFTREG,输出文件格式根据习惯选一种语言,在这里以Verilog的为例,在右边的output file名字中加上lpm_shift。点Next。

3、这个例子是做一个移位寄存器,调用lpm库,和cycloneII元件库,也正好可以作为对 前面建好的ALTERA库的一个验证。点可以查到该模块的使用说明和详细介绍。移位寄存器比较简单,就不用细看了。如下图设置.点Next.

4、加上一个异步清零端,点Next,再点Next,最后点Finish. Add/Remove Files in Project…,

实验五 时序逻辑电路实验

实验五 触发器和时序逻辑电路 一、实验目的 1.熟悉并验证触发器的逻辑功能和触发方式。 2.掌握集成触发器的使用方法和逻辑功能的测试方法。 3.掌握常用中规模集成计数器的逻辑功能和使用方法。 二、实验原理及实验资科 1.带清除和预置端的高速CMOS 双JK 负沿触发器74HC112外引线排列见图。 74LS161(74LS163)外部引脚图 2.二进制(十六进制)计数器74LS161(74LS163) 74LSl61是同步置数、异步清零的4位二进制加法计数器,其功能表如下。 74LSl63是同步置数、同步清零的4位二进制加法计数器。除清零为同步外,其他功能与74LSl61相同。二者的外部引脚图也相同,如图所示。 三、实验内容与步骤 (一) TTL JK 触发器 1.复位、置位功能 根据需要,将触发器芯片的R D 和S D 端分别接到实验箱的一个“0”、“1”电平开关或常 "1"单次脉冲按钮开关上(其余J ,K ,CP 端浮空), Q 和Q 各接到一个电平指示灯上。接通芯片电源,完成下表规定的实验内容。注意,在做表中第5行实验时,先将R D 和S D 接到同一个常"1"单次脉冲按钮开关上。操作完成后恢复原来的接线。记录时对第3~5行可作简要的文字说明。 74HC112外引线排列图

74HC112复位、置位功能 2.逻辑特性 将J端,K端、R D和S D端各接到实验箱的一个“0”、“1”电平开关上,CP接到实验箱的常"1"单次脉冲按钮开关上。操作电平开关和单次脉冲按钮开关,完成下表规定的实验内容,其中Q n状态通过操作R D和S D的电平开关实现。实验时注意这些开关的操作顺序,并观察Q n+1的出现对应CP脉冲的哪一个边沿(上升还是下降沿),作好记录。 74HC112逻辑功能 (二)集成计数器实验 试用中规模集成计数器74LS161(74LS163)和与非门74LS00,设计一个十进制计数器,要求分别使用反馈置数、反馈清零两种方式进行设计。电路的状态转换如下图所示。 00000001001000110100 10011000011101100101 实验要求:①根据选择的芯片完成电路的设计并画出电路图; ②连接电路,选择适当时钟输入方式及频率,用发光二极管或数码管观察计数 过程,并记录状态转换规律。 3.思考题: (1)触发器的基本性质是什么? (2)JK触发器实现二分频工作时,其J、K端应处于什么逻辑状态?还有其它连接方式可供选择吗?举例说明。 (3)集成计数器的同步清零和异步清零有和区别?

利用ModelSim进行的功能仿真,综合后仿真,时序仿真

利用ModelSim进行的功能仿真,综合后仿真,时序仿真 功能仿真,就是在理想状态下(不考虑延迟),验证电路的功能是否符合设计的要求。 功能仿真需要: 1.TestBench或者其他形式的输入激励 2.设计代码(HDL源程序) 3.调用器件的模块定义(供应商提供,如FIFO,RAM等等) 值得一提的是,可以在ModelSim直接编写TestBench,使用View->Source->Show language templates. 综合后仿真(门级仿真),实际上就是将对综合后的门级网表进行仿真,只考虑门延迟,而没有加入时延文件。在功能仿真之后检验综合的结果是否满足功能要求。 综合后仿真需要: 1.综合后的门级网表,注意这里变成了*.vo文件,而不是原来功能仿真中所需要的HDL源代码. 2.测试激励 3.元件库Altera的仿真库位置为 *:\altera\quartus\eda\sim_lib 所谓时序仿真,就是在综合后仿真的基础上加上时延文件(sdf文件),综合考虑了路径延迟和门延迟的情况,验证电路是否存在时序违规。 时序仿真需要: 1.综合后的门级网表,注意这里变成了*.vo文件,而不是原来功能仿真中所需要的HDL源代码. 2.测试激励 3.元件库Altera的仿真库位置为 *:\altera\quartus\eda\sim_lib 4.较门级仿真还需要具有包含时延信息的反标记文件*.sdf 可以有两种方法实现门级仿真,或时序仿真。

1.工程编译成功后,自动启用ModelSim来运行门级仿真,前提是要在Quartus II的Options中设置好ModelSim的路径(和有些参考PDF上说的环境变量好像无关,至少我用的Quartus II 9.0 Web Edtion是这样的)具体方法是,进入Quartus9.0->Tools->Options,在Categroy里选中General 下的EDA Tool Options,在ModelSim右边的Location of Executable中双击来改变路径,就并且在工程中设置了自动启动ModelSim,就可以自动启用了。 1.在EDA Tool Settings,首先将仿真工具设置为ModelSim,然后点击让它自动启动。 2.NativeLink settings中选择testbench,完成相关的设置,例如test bench name,top level module in test bench,Design instance name in test bench,仿真时间,然后编译时会自动启动ModelSim然后完成所有操作,大概这就是Altera所指的和很多EDA工具的无缝连接。 另外一种方法,则是现在quartus ii中生成门级网表和延时文件,然后调用ModelSim进行仿真 1.在quartus ii设置仿真工具为ModelSim,这样设置完成后,在当前目录下会生成一个simulation的目录,该目录下有一个simulation文件夹,里面包含了网标文件和时延反标文件,vhdl语言对应的是网表文件为*.vho,时延文件为*.sdo。Verilog则为*.vo,*.sdo。 2.建立库并映射到物理目录,编译TestBench,执行仿真。 对库的理解: 我想所谓库,实际上就是一个代替文件夹的符号,区别就是,库中的文件的表述皆是经过了编译的实体或者module,一切操作都在库中进行。 ModelSim有两种库,一种是资源库,一种是工作库(默认名为work,保存当前工程下已通过编译的所有文件,资源库放置work库已编译文件所要调用的资源)。所以编译前,一定要有work库,而且只能有一个。

实验五时序电路测试与研究

实验报告 实验课程名称实验项目名称电子技术基础(数字部分)实验五时序电路测试及研究 年级08级 专业电子信息科学与技术 指导教师顾平 学生姓名谭鹏 学号 080712110055 理学院 实验时间: 2010 年 5 月 27 日

一、实验目的 1.掌握常用时序电路的设计,设计及测试方法; 2.训练独立进行实验的技能。 二、实验仪器及材料 1.数电实验箱 2.双踪示波器; 3.导线若干 4.集成块 74LS73双 J-K 触发器X 2 74LS175四D触发器X 1 74LS10三输入端三与非门X 1 74LS00二输入端四与非门X 1 三、实验原理 时序逻辑电路利用触发器能存储一位二进制的记忆功能的原理,加上正确的外围电路及不同的连线组合方法,便可构成不同功能的电路。 常用的存储单元有 D触发器为上升沿触发。 J-K 触发器为下降沿触发,用J-K 触发器可构成 T' 触发器。 T' 触发器:当 J=K=1 时,触发器翻转,每来一个时钟脉冲,翻转一次。 D触发器: Q=D,Q端的状态为 D 的状态。

四、实验内容及分析 1.异步二进制计数器 (1)如图接线。 (2)端输入单脉冲,测试并记录Q1~Q4 端状态及波形。 状态表如下 CP CR Qa Qb Qc Qd 0x0000 111000 210100 311100 410010 511010 610110 711110 810001 911001 1010101 1111101 1210011 1311011 1410111 1511111 1600000 波形图如下 CP C1 C2 C3 C4

modelsim时序仿真

利用ModelSim SE6.0C实现时序仿真 时间:2007-04-05 来源: 作者: 点击:2743 字体大小:【大中小】 1) 打开一个工程文件。 2) 打开Settings设置栏,选择EDA Tools Settings下的Simulation栏。在右边出现的设置栏中将“Tool name”的下拉菜单选择“ModelSim(Verilog)”(如果工程用VHDL语言实现,则可以选择“ModelSim(VHDL)”;如果ModelSim使用的是for Altera的专用版本,则可以选择“ModelSim-Altera(Verilog)”或“ModelSim-Altera(VHDL)”)。 另外在设置栏中还有其他的核选框。 1.如果选中“Maintain hierarchy”,则表示在做时序仿真时就能看到像在功能仿真的工 程文件层次结构,可以找到定义的内部信号。因为在做后仿时,源文件中的信号名 称已经没有了,被映射为软件综合后自己生成的信号名,观察起来很不方便。这个 设置与ISE里综合右键属性的Keep Hierarchy选择YES的功能是一样的。 2.如果选中“Generate netlist for functional simulation only”,则表示只能做功能仿真。 3) 点击“Start Compilation”按钮编译工程,完成之后在当前的工程目录下可以看到一个名为“Simulation”的新文件夹,下面的“ModelSim”文件夹下包括仿真需要的.vo网表文件和包含延迟信息的.sdo文件。 4) 打开ModelSim软件(或者在Quartus下“Settings->EDA Tools Setting->Simulation”出现的设置栏中选中“Run this tool automatically after compilation”,直接从Quartus下调用ModelSim软件),可以在当前工程目录下新建一个Project。在Project标签栏内点击右键,出现在快捷菜单中选择“Add to Project->Existing File…”。加入当前工程目录的 “\Simulation\ModelSim\”路径下的.vo文件、TestBench文件和对应当前工程所选择器件的网表文件。 比如:当前工程选择的器件是Cyclone系列,Quartus安装目录在“C:\altera”路径下。因此需要在“C:\altera\quartus50\eda\sim_lib”路径下找到“cyclone_atom.v”的网表文件导入到ModelSim下的Project。如果是其他器件亦是如此,只要在此目录下找到对应有“_atom”后缀的.v文件。当然整个大前提是ModelSim SE版本已经加入了Alterta的仿真库,不过ModelSim-Altera版本就不会存在这样的问题。

FPGA仿真流程

QuartusII的设计流程 QuartusII软件的使用方法 一、设计输入 1.建立工程 任何一项设计都是一项工程(Project),都必须首先为此工程建立一个放置与此工程相关的所有设计文件的文件夹。此文件夹将被EDA软件默认为工作库(Work Library)。一般,不同的设计项目最好放在不同的文件夹中,而同一工程的所有文件都必须放在同一文件夹中。 首先建立工作库目录,以便存储工程项目设计文件。在D盘下新建文件夹并取名Mydesign。双击QuartusII软件启动图标,即可启动QuartusII软件,启动界面如图1-2所示。 使用New Project Wizard 可以为工程指定工作目录、分配工程名称以及指定最高层设计实体的名称,还可以指定要在工程中使用的设计文件、其他源文件、用户库和EDA 工具,以及目标器件系列和具体器件等。在此要利用“New Preject

Wizard”工具选项创建此设计工程,并设定此工程的一些相关的信息,如工程名、目标器件、综合器、仿真器等。(1)打开建立新工程管理窗。选择菜单File→New Preject Wizard 命令,即弹出“工程设置”对话框(图1-3),以此来建立新的工程。 (2)在单击图1-3后,出现了设置工程的基本信息,如图1-4所示。单击此对话框最上一栏右侧的“… ”按钮,可以选择工程存放在硬盘上的位置,此例中将工程放在D盘Mydesign文件夹下。这三行的第一行的d:\Mydesign表示工程所在的工作库文件夹;第二行的half_add 表示此项工程的工程名,工程名可以取任何其他的名,也可直接用顶层文件的实体名作为工程名,在此就是按这种方式取的名;第三行是当前工程顶层文件的实体名,这里即为half_add。 (2)将设计文件加入工程中。单击图1-4中的Next 按钮,弹出对话框如图1-5所示,在对话框中单击File name 右侧的“… ”按钮,可以将与工程相关的所有VHDL 文件(如果有的话)加入进此工程,此工程文件加入的方法有两种:第1 种方法是单击“Add … ”按钮,从工程目录中选出相关的VHDL 文件;第2 种方法是单击Add All 按钮,将设定

实验五_时序电路测试及研究

《数字电子技术基础》实验报告 实验室名称:信息学院2402 班级:电科班 学生姓名:吕佳琪 学号:20121060025 指导教师:陈志坚 学期:2013-2014学年下学期 2014年5月

一、实验目的 1.掌握常用时序电路的设计,设计及测试方法; 2.训练独立进行实验的技能。 二、实验仪器及材料 1.数电实验箱 2.双踪示波器; 3.导线若干 4.集成块 74LS73 双J-K触发器X 2 74LS175 四D触发器X 1 74LS10 三输入端三与非门X 1 74LS00 二输入端四与非门X 1 三、实验内容及分析 1.异步二进制计数器 (1)如图接线。 (2)由端口输入单脉冲,测试并记录Q1~Q4端状态及波形。

(3)试将异步二进制加法计数改为减法计数,参考加法计数器,要求实验并记录

2.异步二一十进制加法计数器 (1)按图5.4接线。 4个输出端分别接发光二极管显示,CP 端接连续脉冲或单脉冲。 (2)在CP 端接连续脉冲,观察CP 、Q A 、Q B 、Q C 、及Q D 的波形。 波形如下

3.自循环移位寄存器——环形计数器。 (1) 按下图接线,置为1000,用单脉冲计数,记录各触发器的状态。 分析:由上图可知,电路实现了数据的移位。而且,置为1000即在循环内。 改为连续脉冲计数,并将其中一个状态为“0”的触发器置为“1”,观察计数器能 分析:由波形可知,计数器没有正常工作。这是因为在这个计数器循环中,当有且只有一位被置“1”才可以进入有效循环。而出现两个“1”的时候,不在有效循环内,故无法工作。

时序逻辑电路实验报告

时序逻辑电路实验报告 一、实验目的 1、掌握时序逻辑电路的设计过程。 2、了解时序电路器件的构成,用触发器设计一些简单的时序电路。 二、实验原理 如果电路任一时刻的输出不仅取决于当时的输入信号,还取决于电路原来的状态,或者说还与以前的输入信号有关,具备这种逻辑功能特点的电路我们称之为时序逻辑电路。 根据时序电路的时钟信号是否相同,即触发器是否同时翻转,又可以把时序电路分为异步时序电路和同步时序电路。 分析一个时序电路,就是要找出给定时序电路的逻辑功能。步骤如下: 1、从给定逻辑图得出每个触发器的驱动方程; 2、由驱动方程得到触发器的状态方程,从而得到时序电路的状态方程组; 3、根据逻辑图写出时序电路的输出方程。 4、根据得到的方程式画出逻辑图。 5、检查电路是否能够自启动,进行逻辑修改,实现自启动。 而异步时序电路和同步时序电路的分析方法又不尽相同,在异步时序电路中,状态发生转换时,并不是所有触发

器都翻转,只有有时钟信号的才计算触发器次态,没有时钟信号的触发器保持状态不变。 如果想使电路的逻辑功能一目了然,可以用状态转换真值表、状态转换图和时序图等三种方法来表示,他们之间可以相互转换。 为一个四位扭环计数器和其工作波形,并且该计数器可以自行启动。 其工作状态为0000→0001 →0011 →0111 →1111 →1110 →1100 →1000,然后再回到0000重新开始计数。 三、实验器件 74175是四D型触发器,有公共的清零端和公共时钟信号,包含四组相同的D触发器,上升沿触发,清零端低电平有效。

四、实验内容 1、用D触发器7474设计一个异步减法计数器,验证功能并画出逻辑图。 2、制作任意进制加法计数器。(7进制计数器,同步) 3、用JK触发器7476设计一个九进制同步加法计数器,搭建电路验证其功能,并画出逻辑图。 4、用JK触发器和门电路设计111序列信号检测器,有

功能仿真与时序仿真

功能仿真和时序仿真 章节:第3 章第2节 功能仿真与时序仿真 概述 仿真过程是正确实现设计的关键环节,用来验证设计者的设计思想是否正确,及在设计实现过程中各种分布参数引入后,其设计的功能是否依然正确无误。仿真主要分为功能仿真和时序仿真。功能仿真是在设计输入后进行;时序仿真是在逻辑综合后或布局布线后进行。 1. 功能仿真 ( 前仿真 ) 功能仿真是指在一个设计中,在设计实现前对所创建的逻辑进行的验证其功能是否正确的过程。布局布线以前的仿真都称作功能仿真,它包括综合前仿真( Pre-Synthesis Simulation )和综合后仿真( Post-Synthesis Simulation )。综合前仿真主要针对基于原理框图的设计 ; 综合后仿真既适合原理图设计 , 也适合基于 HDL 语言的设计。 2. 时序仿真(后仿真) 时序仿真使用布局布线后器件给出的模块和连线的延时信息,在最坏的情况下对电路的行为作出实际地估价。时序仿真使用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激励也是相同的;惟一的差别是为时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时,并且在仿真结果波形图中,时序仿真后的信号加载了时延,而功能仿真没有。 仿真工具 1. ModelSim 总体概览 ModelSim 仿真工具是工业上最流行、最通用的仿真器之一,可支持Verilog 、 VHDL 或是 VHDL/ Verilog 混合输入的仿真,它的 OEM 版本允许Verilog 仿真或 VHDL 仿真。Model 技术公司共开发了 ModelSim/VHDL 和ModelSim/Verilog 两种 ModelSim 产品,但它又分为不同的版本: OEM 版本—— ModelSim/LNL 支持 Verilog 或者 VHDL ,但是不同时支持; ModelSim/PLUS 版本支持混合仿真 Verilog 和 VHDL ; ModelSim/SE 版本支持 PLUS 的所有功能连同附加功能。

实验五利用条件语句实现计数分频时序电路

电子信息工程学系实验报告 课程名称:EDA技术与实验 实验项目名称:利用条件语句实现计数分频时序电路实验时间: 班级:通信姓名:学号:010705 实验目的: 1.掌握条件语句在简单时序模块设计中的使用。 2.学习在Verilog模块中应用计算器。 实验内容: 1.学习Verilog HDL设计课件。 2.学习测试模块的编写,运行模块调用的例子并进行仿真。 实验步骤: 1.在教师的指导下,学习Verilog HDL课件。 2.由教师演示max+plusⅡ课件的文本设计流程。 3.参考课件实例,动手操作软件,按照流程做完从新建文件,编译,仿真,分配引脚等软件操作部分的 全过程。 实验过程: 一、BCD编码—七段数码显示译码器 1、新建文本:选择菜单Fi l e下的New,在框中选中“T ext Editor file”,按“OK”按钮,即选中了文本编辑方式。 2、在文本编辑窗口,输入Verilog语言,代码如下:

3、将文件命名为“serial1”保存v文件。 4、打开编译器窗口:在MAX—plusⅡ菜单内选择Compiler 项,即出现编译器窗口。选择Start即可开始编译,MAX+PLUS II编译器将检查项目是否有错。 5、建立波形编辑文件:在MAX—plusⅡ菜单内选择Waveform Editor File 项。 6、仿真节点插入:选择菜单Node下的Enter Nodes from SNF选项。按右上侧的“List”按钮,左边的列表框将立即列出所有可以选择的信号结点,然后按中间的“=>”按钮,将左边列表框的结点全部选中到右边的列表框。单击“OK”,选中的信号将出现在波形编辑器中。 7、输入波形设置,保存波形文件,文本仿真:单击菜单File下的Save选项,在弹出的窗口中将波形文件存在以上的同一目录中,文件取名为serial1.scf。单击MAX—plusⅡ菜单内选择Simulator选项,单击Start,接着打开Open SCF(界面如下图),即完成文本的波形仿真。 二、用for语句实现两个8位数相乘 过程如同“BCD编码—七段数码显示译码器”, 输入代码如下图: 三、用repeat语句实现8位二进制数的相乘 过程如同“BCD编码—七段数码显示译码器”, 输入代码如下图:

相关文档
相关文档 最新文档