实验八:利用有限状态机进行时序逻辑的设计
- 格式:doc
- 大小:36.00 KB
- 文档页数:3
实验八时序逻辑电路设计实验一、实验概述本实验是使用74LS74双D触发器构成一个扭环形计数器,以及使用74LS112双JK触发器构成三进制加法计数器。
二、实验目的1、掌握简单的时序电路的设计方法2、掌握简单时序电路的调试方法三、实验预习要求1、查找74LS74、74LS112、74LS00芯片引脚图,并熟悉引脚功能2、复习教材中异步2n进制计数器构成方法及同步2n进制计数器构成方法的内容3、复习同步时序电路和异步时序电路的设计方法4、设计画出用74LS74构成异步四进制减法计数器的逻辑电路图5、设计画出用74LS112构成同步四进制加法计数器的逻辑电路图四、实验原理时序逻辑电路是数字逻辑电路的重要组成部分,时序逻辑电路又称时序电路,主要由存储电路和组合逻辑电路两部分组成。
它和我们熟悉的其他电路不同,其在任何一个时刻的输出状态由当时的输入信号和电路原来的状态共同决定,而它的状态主要是由存储电路来记忆和表示的。
同时时序逻辑电路在结构以及功能上的特殊性,相较其他种类的数字逻辑电路而言,往往具有难度大、电路复杂并且应用范围广的特点。
时序逻辑电路通常可以分为同步时序逻辑电路和异步时序逻辑电路两大类。
同步时序逻辑电路从构成方式来讲,同步时序电路所有操作都是在同一时钟严格的控制下步调一致地完成的。
从电路行为上,同步电路的时序电路公用同一个时钟,而所有的时钟变化都是在时钟的上升沿(或下降沿)完成的。
同步逻辑是时钟之间存在固定因果关系的逻辑,所有时序逻辑都是在同源时钟控制下运行。
注意,在用Verilog HDL实现时,并不要求是同一时钟,而是同源时钟。
所谓的同源时钟是指同一个时钟源衍生频率比值为2的幂次方,且初相位相同的时钟。
异步时序逻辑电路异步时序逻辑电路,顾名思义就是电路的工作节奏不一致,不存在单一的主控时钟,主要是用于产生地址译码七、FIFO和异步RAM的读写控制信号脉冲。
除可以使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件;电路状态改变完全有外部输入的变化直接引起。
实验八(一) 时序逻辑电路设计一、设计内容1.用JK 触发器设计一个8421码十进制同步加法计数器。
时钟信号CP 由实验箱的“单次”或1Hz 自动秒脉冲提供,计数器输出状态用实验箱上的LED 数码管检测,记录实验结果。
用实验箱上的1kHz 时钟信号作为计数器的计数脉冲CP ,用示波器观察并记录CP 及计数器各输出端的对应波形。
2.用D 或JK 触发器设计一个110串行序列信号检测器。
输入信号由电平输出器提供,时钟信号CP 接逻辑实验箱的“单次” 时钟信号。
当连续输入信号110时,该电路输出1,否则输出0。
设依次送入的信号为001101110。
3.用D 触发器设计一个同步四相时钟发生器,其输入时钟CP 及各输出波形如图实验8.1所示。
输入时钟CP 为1kHz 时钟信号,用示波器观察时钟信号CP 与各输出端对应的波形。
二、设计要求1.用Mutisim2001进行电路仿真。
2.画出时序逻辑电路原理图。
3.叙述集成触发器的逻辑功能和使用。
4.写出设计过程,并记录实验结果。
三、设计过程1. 用JK 触发器设计一个8421码十进制同步加法计数器。
(1).状态真值表:Q 1 Q 2Q 3Q 4 CPQ 1 Q 2 Q 3Q 4图实验8.1 四相时钟发生器输入、输出波形0 0,(3)电路图:2.用D 或JK 触发器设计一个110串行序列信号检测器。
(1)状态图:>C1>C1>C1>C1(2)原始状态表:A:00B:10 C:11现态((6)激励方程:,(7)电路图:3.用D 触发器设计一个同步四相时钟发生器。
(1).状态真值表:激励方程:,,, (3).电路图如下:Q>C1Q>C1。
北航实验报告封面(共8篇)北航惯性导航综合实验一实验报告实验一陀螺仪关键参数测试与分析实验加速度计关键参数测试与分析实验二零一三年五月十二日实验一陀螺仪关键参数测试与分析实验一、实验目的通过在速率转台上的测试实验,增强动手能力和对惯性测试设备的感性认识;通过对陀螺仪测试数据的分析,对陀螺漂移等参数的物理意义有清晰的认识,同时为在实际工程中应用陀螺仪和对陀螺仪进行误差建模与补偿奠定基础。
二、实验内容利用单轴速率转台,进行陀螺仪标度因数测试、零偏测试、零偏重复性测试、零漂测试实验和陀螺仪标度因数与零偏建模、误差补偿实验。
三、实验系统组成单轴速率转台、MEMS 陀螺仪(或光纤陀螺仪)、稳压电源、数据采集系统与分析系统。
四、实验原理1. 陀螺仪原理陀螺仪是角速率传感器,用来测量载体相对惯性空间的角速度,通常输出与角速率对应的电压信号。
也有的陀螺输出频率信号(如激光陀螺)和数字信号(把模拟电压数字化)。
以电压表示的陀螺输出信号可表示为:UGUG?0??kG??kGfG(a)?kG?G(1-1)式中fG(a)是与比力有关的陀螺输出误差项,反映了陀螺输出受比力的影响,本实验不考虑此项误差。
因此,式(1-1)简化为 UGUG?0??kG??kG?G(1-2)由(1-2)式得陀螺输出值所对应的角速度测量值:测量?UG?UG(0)(1-3) ??GkG对于数字输出的陀螺仪,传感器内部已经利用标度因数对陀螺仪模拟输出进行了量化,直接输出角速度值,即:测量??0??真值??G(1-4)?0是是陀螺仪的零偏,物理意义是输入角速度为零时,陀螺仪输出值所对应的角速度。
且UG(0)?kG?0 (1-5)?测量精度受陀螺仪标度因数kG、随机漂移?G、陀螺输出信号UG的检测精度和UG(0)的影响。
通常kG和UG(0)表现为有规律性,可通过建模与补偿方法消除,?G表现为随机特性,可通过信号滤波方法抵制。
因此,准确标定kG和UG(0)是实现角速度准确测量的基础。
有限状态机实验报告一、实验目的●进一步学习时序逻辑电路●了解有限状态机的工作原理●学会使用“三段式”有限状态机设计电路●掌握按键去抖动、信号取边沿等处理技巧二、实验内容用三段式有限状态机实现序列检测功能电路a)按从高位到低位逐位串行输入一个序列,输入用拨动开关实现。
b)每当检测到序列“1101”(不重叠)时,LED指示灯亮,否则灭,例如i.输入:1 1 0 1 1 0 1 1 0 1ii.输出:0 0 0 1 0 0 0 0 0 1c)用八段数码管显示最后输入的四个数,每输入一个数,数码管变化一次d)按键按下的瞬间将拨动开关状态锁存i.注意防抖动(按键按下瞬间可能会有多次的电平跳变)三、实验结果1.Rst_n为0时数码管显示0000,led灯不亮,rst_n拨为1,可以开始输入,将输入的开关拨到1,按下按钮,数码管示数变为0001,之后一次类推分别输入1,0,1,按下按钮后,数码管为1101,LED灯亮,再输入1,LED灯灭,之后再输入0,1(即共输入1101101使1101重叠,第二次LED灯不亮),之后单独输入1101,LED灯亮2.仿真图像刚启动时使用rst_n一段时间后其中Y代表输出,即控制led灯的信号,sel表示数码管的选择信号,seg表示数码管信号四、实验分析1、实验基本结构其中状态机部分使用三段式结构:2、整体结构为:建立一下模块:Anti_dither.v输入按键信号和时钟信号,输出去除抖动的按键信号生成的脉冲信号op这一模块实现思路是利用按钮按下时会持续10ms以上而上下抖动时接触时间不超过10ms来给向下接触的时间计时,达到上限时间才产生输出。
Num.v输入op和序列输入信号A,时钟信号clk和复位信号,复位信号将num置零,否则若收到脉冲信号则将num左移一位并将输入存进最后一位。
输出的num即为即将在数码管上显示的值Scan.v输入时钟信号,对其降频以产生1ms一次的扫描信号。
时序逻辑电路的设计与测试实验报告一、实验目的本实验旨在让学生掌握时序逻辑电路的设计与测试方法,了解时序逻辑电路的基本原理和特点,以及掌握时序逻辑电路的设计流程和测试方法。
二、实验原理1. 时序逻辑电路的基本原理时序逻辑电路是指由组合逻辑电路和存储器件组成的电路,具有记忆功能。
它能够根据输入信号的状态和过去的状态来决定输出信号的状态。
时序逻辑电路包括触发器、计数器、移位寄存器等。
2. 时序逻辑电路的特点(1)具有记忆功能,能够存储过去状态;(2)输出信号不仅与输入信号相关,还与过去状态相关;(3)具有延迟特性,输出信号需要一定时间才能稳定下来。
3. 时序逻辑电路的设计流程(1)确定功能要求;(2)选择合适的存储器件和触发器;(3)设计组合逻辑部分;(4)设计时钟控制部分;(5)综合验证。
4. 时序逻辑电路测试方法常用测试方法包括仿真测试和实际硬件测试。
仿真测试可以通过软件工具进行,实际硬件测试需要使用实验设备进行。
三、实验内容本次实验的内容为设计一个简单的计数器电路,该电路能够对输入信号进行计数,并将结果输出到LED灯上。
四、实验步骤1. 确定功能要求本次实验要求设计一个4位二进制计数器,能够对输入信号进行计数,并将结果输出到LED灯上。
2. 选择合适的存储器件和触发器本次实验选择D触发器作为存储器件,因为它具有较高的稳定性和可靠性。
同时,还需要选择合适的时钟控制电路,以确保计数器能够正常工作。
3. 设计组合逻辑部分组合逻辑部分主要包括加法器和译码器。
加法器用于将当前计数值加1,译码器则用于将二进制码转换成LED灯能够显示的十进制码。
4. 设计时钟控制部分时钟控制部分主要包括时钟发生电路和时序控制电路。
时钟发生电路用于产生稳定的时钟信号,时序控制电路则用于控制D触发器的输入端和输出端。
5. 综合验证综合验证包括仿真测试和实际硬件测试。
仿真测试可以通过软件工具进行,实际硬件测试需要使用实验设备进行。
实验八有限状态机一、实验目的1、进一步掌握时序仿真序列的时序条件设置;2、通过实验掌握有限状态机的要点和特点及其设计。
二、VHDL仿真实验(1)建立文件夹D:\alteral\EDAzuouye\che7-1,启动QuartusII软件工作平台,打开并建立新工程管理窗口,完成创建工程。
图1 利用New Project Wizard创建工程FSM_EXP(2)打开文本编辑。
NEW→VHDL File→相应的输入源程序代码→存盘为FSM_EXP.vhd.。
图2 选择编辑文件类型源程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FSM_EXP ISPORT(clk,reset:IN STD_LOGIC;state_inputs :IN STD_LOGIC_VECTOR(0 TO 1);comb_outputs : OUT INTEGER RANGE 0 TO 15);END FSM_EXP;ARCHITECTURE behv OF FSM_EXP ISTYPE FSM_ST IS (s0,s1,s2,s3,s4);SIGNAL c_st,next_state:FSM_ST;BEGINREG:PROCESS(reset,clk) BEGINIF reset='0' THEN c_st<=s0;ELSIF clk='1' AND clk 'EVENT THEN c_st<=next_state;END IF; END PROCESS REG;COM:PROCESS(c_st,state_inputs) BEGINCASE c_st ISWHEN s0 => comb_outputs<=5;IF state_inputs="00" THEN next_state<=s0;ELSE next_state<=s1;END IF;WHEN s1=>comb_outputs<=8;IF state_inputs="01" THEN next_state<=s1;ELSE next_state<=s2;END IF;WHEN s2=>comb_outputs<=12;IF state_inputs="10" THEN next_state<=s0;ELSE next_state<=s3;END IF;WHEN s3=>comb_outputs<=14;IF state_inputs="11" THEN next_state<=s3;ELSE next_state<=s4;END IF;WHEN s4=>comb_outputs<=9;next_state<=s0;WHEN OTHERS=>next_state<=s0;END CASE;END PROCESS COM;END behv;(3)综合运行,检查设计是否正确。
实验八用状态机实现序列检测器的设计
1、实验目的
本实验旨在通过状态机的设计实现一个序列检测器,该序列检测器可
以检测01序列中可编程的模式,并实现相应的响应动作。
2、实验原理
序列检测器是一种有限状态机,由一系列状态和一系列触发器组成,
可以检测特定的序列,并拥有一定的驱动和响应动作。
根据所检测的序列,检测器通过触发器设置能够自动的转换到特定的状态,触发器的设置可以
根据需要进行调整,从而实现不同的序列和不同的响应动作。
3、实验内容
(1)状态机的设计
状态机的设计分为状态图设计和状态表设计两部分,在状态图设计中,绘制出起始状态、可能的转移状态以及相应的触发器, shown by figure 1 below . 再根据实验的要求,结合状态图和状态表,确定每一个触发器
的对应的转移状态以及响应动作, shown by table 1 below .
(2)用VHDL编程实现状态机
在VHDL中,可以实现上面的状态机,用自定义的类型定义状态、触
发器、响应动作以及转移条件,将状态图转换成可执行的VHDL代码,shown by listing 1 below .
(3)VHDL代码的仿真
在仿真中,可以根据状态图测试序列检测器的功能,确保能够检测出正确的模式,并实现预期的响应动作, shown by figure 2 below.
4、实验结果。
《FPGA系统设计》实验报告》有限状态机的设计实验一 .实验目的(1)了解有限状态机的概念;(2)掌握Moore型有限状态机的特点和其VHDL语言的描述方法;(3)掌握Mealy型有限状态机的特点和其VHDL语言的描述方法;二.实验要求(1)状态机的介绍FPGA设计中,最重要的设计思想就是状态机的设计。
状态机的本质是对具有逻辑顺序和时序规律的事件的描述,它有三个要素:状态、输入、输出。
状态也叫做状态变量,根据状态机的涉及的状态是有限的还是无限的,可以将状态机分为有限状态机(Finite State Machine, FSM) 和无限状态机(Infinite StateMachine, ISM), 逻辑设计中一般都是有限状态机,如全自动洗衣机有浸泡、洗涤、排水、脱水,工作状态有四种,流程状态无需手动操作,只要条件满足就自动进入下一工作个状态,并且工作流程可以灵活设定。
这种控制功能完全可用有限状态机来实现;输出是指某-个状态的特定输出; 输入是状态机进入每个状态的条件。
状态机从输出方式出发,可以分为摩尔(Moore) 型和米里(Mealy)型;Moore型状态机:状态机的输出信号仅仅由当前状态决定。
Mealy型状态机:状态机的输出信号不仅与电路的当前状态有关,还与当前的输入有关。
用VHDL设计的状态机其结构由以下几部分组成:(1)说明部分状态变量(如现态和次态)应定义为信号,便于信息传递,使用TYPE语句定义新的数据类型,此数据类型为枚举型,例如:ARCHITECTURE... ISTYPE FSM ST IS (s0,s1,s2,s3);SIGNAL curent state.next state :FSM ST;...其中新定义的数据类型名为"FSM ST",其类型的元素分别为50、sI. S2、S3.表示状态机的四个状态。
定义信号SIGNAL的状态变量为euret state 和next state,它们的数据类型被定义为FSM ST.因此状态变量current state 和Inext state的取值范围在数据类型FSM ST所限定的四个元素中。
《FPGA系统设计》实验报告》有限状态机的设计一、设计任务a)了解有限状态机的概念;b)掌握Moore型有限状态机的特点和其VHDL语言的描述方法;c)掌握Mealy型有限状态机的特点和其VHDL语言的描述方法。
二、设计过程实验原理在数字电路系统中,有限状态机是一种重要的时序逻辑电路模块。
它对数字系统的设计具有十分重要的作用。
例如:全自动洗衣机,浸泡、洗涤、排水、脱水,流程状态无需手动操作,只要条件满足就自动进入下一工作个状态,并且工作流程可以灵活设定。
这种控制功能完全可用有限状态机来实现。
有限状态机( Finite State Machine, FSM)也是一种时序逻辑电路。
状态机从输出方式出发,可以分为Moore型和Mealy型;从状态机结构出发,可以分为单进程状态机和多进程状态机。
我们知道,任何数字系统都可以分为相互作用的控制单元(control unit)和数据通道(data path)两部分。
数据通道通常由组合逻辑构成,而控制单元通常由时序逻辑构成,任何时序电路都可以表示为有限状态机(Finite State Machine,FSM)。
在基本时序逻辑电路建模的基础上,本实验主要介绍有限状态机实现复杂时序逻辑电路的设计。
数字系统控制部分的每一个部分都可以看作一种状态,与每一控制相关的转换条件指定了状态的下一个状态和输出。
根据有限状态机的输出与当前状态和当前输入的关系,可以将有限状态机分成Moore 型有限状态机和Mealy型有限状态机两种。
从现实的角度,这两种状态机都可以实现同样的功能,但是它们的时序不同,选择使用哪种有限状态机要根据实际情况进行具体分析。
1.单进程Moore型有限状态机程序码图6.1 引脚分配图图6.2 Moore型实验箱现象2.该状态机时一个2进程Mealy型状态机,进程COMREG是时序与组合混合型进程;进程COM1负责根据状态和输入信号给出不同的输出信号。
图6.3 引脚分配图图6.4 Mealy型实验箱现象3.该状态机属于Moore型状态机,由两个主控进程构成,其中进程REG 是主控时序进程,COM是主控组合进程。
ASIC设计实验报告学院:电子工程学院学号:2014*******姓名:***指导老师:***2014年11月13日一、实验目的:通过对ASIC实验课的学习,应当学会以下几点:1.熟悉Linux操作系统的应用环境,基本命令行的应用,以及对vi编辑器熟练应用。
2.熟练掌握Verilog编程语言,包括基本组合逻辑电路的实现方法,基本时序逻辑电路的实现方法,怎样使用预定义的库文件,利用always块实现组合逻辑电路的方法已经着重了解assign与always 两种组合逻辑电路实现方法之间的区别,深入了解阻塞赋值与非阻塞赋值的概念以及应用的差别,有限状态机(FSM)实现复杂时序逻辑的方法,以及学会在Linux 系统环境当中应用Synopsys工具VCS进行仿真。
3.熟悉电路设计当中的层次化、结构化的设计方法。
4.熟悉CPU当中有哪些模块组成,模块之间的关系,以及其基本的工作原理。
5.学会利用汇编语言设计程序,注意代码规范性要求。
二、实验要求:按照实验指导书上的要求即:CPU各个模块的Verilog语言代码的编写、编译及仿真正确,并在规定的时间内完成。
要求对CPU进行语言级系统仿真结果正确之后,利用该实验当中采用的八个汇编关键字,编写一个能够实现某种功能的小程序。
然后对其中的控制器电路进行综合,并检查Timing 和Power,进行门级仿真。
三、实验内容:设计一个8位RISC_CPU 系统。
(RISC: Reduced Instruction Set Computer),它是一种八十年代才出现的CPU,与一般的CPU相比,不仅只是简化了指令系统,而且通过简化指令系统使计算机的结构更加简单合理,从而提高了运算速度。
从实现的方法上,它的时序控制信号部件使用了硬布线逻辑,而不是采用微程序控制方式,故产生控制序列的速度要快的多,因为省去了读取微指令的时间。
此CPU所具有的功能有:(1)取指令:当程序已在存储器中时,首先根据程序入口地址取出一条程序,为此要发出指令地址及控制信号。
实验八同步时序电路逻辑设计一、实验目的:1.掌握同步时序电路逻辑设计过程。
2.掌握实验测试所设计电路的逻辑功能。
3.学习EDA软件的使用。
二、实验仪器:序号仪器或器件名称型号或规格数量1 逻辑实验箱 12 万用表 13 双踪示波器 14 74LS194 15 74LS112 16 74LS04 17 74LS00 18 74LS86 19 74LS10 1三、实验原理:同步时序电路逻辑设计过程方框图如图8-1所示。
设计要求状态转移图状态转移表状态化简状态分配选择触发器激励方程、输出方程逻辑电路图8-1其主要步骤有:1.确定状态转移图或状态转移表根据设计要求写出状态说明,列出状态转移图或状态转移表,这是整个逻辑设计中最困难的一步,设计者必须对所需要解决的问题有较深入的理解,并且掌握一定的设计经验和技巧,才能描绘出一个完整的、较简单的状态转移图或状态转移表。
2.状态化简将原始状态转移图或原始状态转移表中的多余状态消去,以得到最简状态转移图或状态转移表,这样所需的元器件也最少。
3.状态分配这是用二进制码对状态进行编码的过程,状态数确定以后,电路的记忆元件数目也确定了,但是状态分配方式不同也会影响电路的复杂程度。
状态分配是否合理需经过实践检验,因此往往需要用不同的编码进行尝试,以确定最合理的方案。
4.选择触发器通常可以根据实验室所提供的触发器类型,选定一种触发器来进行设计,因为同步时序电路触发器状态更新与时钟脉冲同步,所以在设计时应尽量采用同一类型的触发器。
选定触发器后,则可根据状态转移真值表和触发器的真值表作出触发器的控制输入函数的卡诺图,然后求得各触发器的控制输入方程和电路的输出方程。
5.排除孤立状态理论上完成电路的设计后,还需检查电路有否未指定状态,若有未指定状态,则必须检查未指定状态是否有孤立状态,即无循环状态,如果未指定状态中有孤立状态存在,应采取措施排除,以保证电路具有自启动性能。
经过上述设计过程,画出电路图,最后还必须用实验方法对电路的逻辑功能进行验证,如有问题,再作必要的修改。
O 引言飞行器自毁系统是飞行器的重要组成部分,它具有非常重要的军事及民用价值。
飞行器自毁系统主要是实现飞行器在非正常飞行状态时的可靠自毁。
飞行器按正常状态飞行,如果出现异常可以通过外部的飞行状态参数传感器及自毁电路控制自身自毁。
随着飞行器研制技术的不断发展,对飞行器自毁系统小型化、模块化、通用化的要求越来越迫切,CPLD的出现可以满足这一要求。
由于CPLD硬件电路的特点,必须研究适合CPLD硬件架构的设计方法,以达到系统在运行速度与资源消耗上的平衡。
有限状态机及其技术是实用数字系统设计中实现高效率高可靠逻辑控制的重要途径,有限状态机是一种简单、结构清晰、设计灵活的方法,它易于建立、理解和维护,特别应用在具有大量状态转移和复杂时序控制的系统中,更显其优势。
这里针对自毁系统的特点,提出一种符合CPLD结构、基于有限状态机的设计方法。
l 自毁系统硬件设计硬件设计采用以高性能CPLD芯片为核心的数字电路和高性能运算放大器及飞行参数传感器组为主要元件的模拟电路相结合的方案。
系统主要由系统时钟、CPLD控制芯片、飞行参数传感器组、传感器组输出判断与产生电路、自毁控制逻辑、测试模块和电源等模块组成。
该设计使用Altera公司的EPM7064SLC44 -10芯片,其内部包含有64个宏单元,1 250个可用的系统门,引脚到引脚的逻辑延迟时间为5.0 ns,计数器工作频率可达175.4 MHz。
用CPLD实现上述自毁条件的时序控制逻辑的核心电路及其外围电路如图1所示。
CPLD芯片为整个系统的核心,它用来实现计时以及整个系统的时序控制。
直流电压变换电路用于将输入的直流电压转换成EP M7064S所需的电压,以及外围电路所需的工作电压。
系统时钟电路为计时装置提供稳定的时钟信号及后续分频使用的时钟基准;电平转换电路将飞行器上输入信号进行调理后转换为芯片可识别的TTL/CMOS 电平标准;复位电路在系统上电后给控制芯片提供复位信号。
实验八:利用有限状态机进行时序逻辑的设计一:利用有限状态机进行时序逻辑的设计的源程序:
module seqdet(x,z,clk,rst,state);
input x,clk,rst;
output z;
output[2:0] state;
reg[2:0] state;
wire z;
parameter IDLE='d0, A='d1, B='d2,
C='d3, D='d4,
E='d5, F='d6,
G='d7;
assign z = ( state==E && x==0 )? 1 : 0;
always @(posedge clk)
if(!rst)
begin
state <= IDLE;
end
else
casex(state)
IDLE : if(x==1)
begin
state <= A;
end
A: if(x==0)
begin
state <= B;
end
B: if(x==0)
begin
state <= C;
end
else
begin
state <= F;
end
C: if(x==1)
begin
state <= D;
end
else
begin
state <= G;
end
D: if(x==0)
begin
state <= E;
end
else
begin
state <= A;
end
E: if(x==0)
begin
state <= C;
end
else
begin
state <= A;
end
F: if(x==1)
begin
state <= A;
end
else
begin
state <= B;
end
G: if(x==1)
begin
state <= F;
end
default:state=IDLE;
endcase
endmodule
二:利用有限状态机进行时序逻辑的设计的测试代码:`timescale 1ns/1ns
`include "./seqdet.v"
module seqdet_Top;
reg clk,rst;
reg[23:0] data;
wire[2:0] state;
wire z,x;
assign x=data[23];
always #10 clk = ~clk;
always @(posedge clk)
data={data[22:0],data[23]};
initial
begin
clk=0;
rst=1;
#2 rst=0;
#30 rst=1;
data ='b1100_1001_0000_1001_0100;
#500 $stop;
end
seqdet m(x,z,clk,rst,state);
endmodule
三:Transcript显示结果:
# Reading E:/altera/91/modelsim_ase/tcl/vsim/pref.tcl
# Loading project fulladder8
# reading E:\altera\91\modelsim_ase\win32aloem/../modelsim.ini # Loading project ssss
# Compile of seqdet.v was successful.
# Compile of seqdet_Top.v was successful.
# 2 compiles, 0 failed with no errors.
vsim work.seqdet_Top
# vsim work.seqdet_Top
# Loading work.seqdet_Top
# Loading work.seqdet
四:测试波形如下图所示:。