什么是有限状态机
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.什么是有限状态机,Moore机和Mealy机的各自特点和他们之间的区别是什
么?
答:有限状态机是指输出取决于过去输入部分和当前输入部分的时序逻辑电路。Mealy机属于同步输出状态机,他的输出是当前状态和所有输入信号的的函数,其输出会在输出仅为当前状态的函数,与当前输入信号无关。当然,当前状态是和上一时刻时输入信号相关的,当前输入的变化必须等待下一时钟到来使状态发生变化时才能导致输出的变化。因此,Moore机比Mealy机多等待一个时钟周期才会引起输出的变化,由于Mealy机的输出不与时钟同步,当状态译码比较复杂时,易在输出端产生不可避免的毛刺。
********************************************************************* 2.一个复杂的电路可以划分为几个不同的抽象级别:系统级,算法级,寄存器
传输级,逻辑门级,晶体管开关级。
********************************************************************* 3.reg和wire的区别
Reg型变量需要被明确赋值,并且在重新赋值前,一直保持原值,wire对应于连续赋值,如assign,reg对应于过程赋值,如always,initial。
********************************************************************* 4.阻塞和非阻塞的区别
非阻塞赋值在整个过程块结束后才能完成赋值操作,阻塞赋值在该语句结束时就立即完成赋值操作,阻塞语句是顺序执行的,而非阻塞语句是同时执行的。
********************************************************************* 5.举例说明触发器在什么情况下会在综合过程中生成锁存器
在写组合逻辑电路的always块中,, always块中要使用的输入信号在always 后面的敏感信号表中有遗漏,组合逻辑电路设计时不能有反馈。另外一个就是if、else;case语句没有写完全。
********************************************************************* 6.什么是综合?综合包括哪两个阶段,每个阶段的具体功能是什么?
(1)综合是指将HDL语言、原理图等设计输入翻译成由与门,或门,非门,等基本逻辑单元组成的门级连接,并根据设计目标和要求优化所生成的逻辑连接,输出门级网表。
(2)两个阶段,转换和编译。转换阶段综合工具将高层语言描述的电路用门级的逻辑来实现。编译阶段包括优化与映射过程,是综合工具对已有的初始化电路进行分析,去掉电路中的冗余单元并对不满足限制条件的路径进行优化,然后映射到工艺库上
********************************************************************* 7.Initial语句与always语句施加激励
Initial和always是两种基本的过程结构语句,在仿真开始并行执行,被动检测相响应时使用always语句,主动产生激励时使用initial语句。在initial 和always的区别是:initial语句只执行一次,always语句不断重复执行。所以initial多用于给变量,信号付初始值或用于产生测试激励。
*********************************************************************
8.用行为描述方法编写4位全加器?
module adder4(cout,sum,ina,inb,cin);
output[3:0] sum;
output cout;
input[3:0] ina,inb;
input cin;
assign {cout,sum}=ina+inb+cin;
endmodule
********************************************************************* 9.如何生成时钟激励信号,什么是TestBench?
1)使用initial方式产生占空比50%的时钟
initial
begin
Clk = 0 ;
# delay ;
forever
# (period/2) Clk = ~ Clk ;
End
2)使用always方式
initial
Clk= 0 ;
Always
# (period/2) Clk = ~ Clk ;
3)使用repeat产生确定数目的时钟脉冲
initial
begin
Clk = 0 ;
repeat ( 6 )
# (period/2) Clk = ~ Clk ;
End
4)产生占空比非50%的时钟
initial
Clk = 0 ;
always
begin
# 3 Clk=~Clk;
#2 Clk=~Clk;
End
testbench是一种验证的手段。首先,任何设计都是会有输入输出的。但是在软环境中没有激励输入,也不会对你设计的输出正确性进行评估。那么此时便有一种,模拟实际环境的输入激励和输出校验的一种“虚拟平台”的产生。在这个平台上你可以对你的设计从软件层面上进行分析和校验,这个就是testbench的含义。
9.如何使用Verilog语句生成异步复位激励与同步激励信号?
(a)异步复位
initial
begin
Rst = 1 ;
# 100 ;
Rst = 0 ;
# 500 ;
Rst = 1 ;
End
(b)同步复位
initial
begin
Rst = 1 ;
@( negedge Clk) ; //等待时钟下降沿
Rst = 0 ;
# 30 ;
repeat(3)@( negedge Clk) ; //等待3个时钟下降沿
Rst = 1 ;
End
CPLD和FPGA都是可编程的逻辑部件,他们是当今数字系统设计的主要硬件平台,主要特点是完全由软件进行编程和配置,从而完成某种特定功能,且可以反复擦写,在修改和升级时,不需要额外改变PCB电路板,只在计算机上修改和更新程序,使硬件设计成为软件开发,缩短了设计周期,提高了实现的灵活性降低成本。
物理综合包括两种模式:(1)RTL到布局后的门级模式(2)门到布局后的门级模式
形式验证:门级网表还可以通过形式验证来检查综合后的网表与RTL源代码是否一致,逻辑等效性验证是目前形式验证的主要形式。
测试平台为RTL代码或门级网表的功能验证提供验证平台,该平台包括待验证的设计,激励信号产生器和输出显示控制等。在仿真的时候,测试平台用于产生测试激励给DUT,同时检查DUT的输出是否与预测的一致。从而达到验证设计功能的目的。
********************************************************************* 10.设计有限状态机的步骤如下
1.画出状态转移图
2.确定编码状态和编码方式
3.给出状态方程和输出方程
4.编写verilog代码