veriloghdl数字设计与综合答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
veriloghdl数字设计与综合答案
【篇一:verilog习题选答】
txt>答:fpga中,由程序来转换为可烧录的二进制码。
ic设计中,主要是由design-compiler来实现。
2.能否说模块相当于电路图中的功能模块,端口相当于功能模块的 3.assign声明语句,实例元件,always块,这三类描述中哪一种直接与电路结构有关?
4.由连续赋值语句(assign)赋值的变量能否是reg型的?
答:赋值运算分为连续赋值和过程赋值两种。
(1)连续赋值连续赋值语句只能对线网型变量进行赋值,而不能对寄存器型变量进行
赋值,基本的语法结构为:assign #(延时量) 线网型变量名 = 赋值表达式; 一个线网型变量一旦被连续赋值语句赋值后,赋值语句右端赋值表达式的值将持续对赋值变量产生连续驱动,只要右端表达式任一操作数的值发生变化,就会立即触发对赋值变量的更新操作。
(2)过程赋值过程赋值主要用于两种结构化模块(initial和always)中的赋值语句。
在过程块中只能使用过程赋值语句,不能在过程块中出现连续赋值语句,同时过程赋值语句也只能用在过程赋值模块中。
基本的语法结构为:被赋值变量赋值操作符赋值表达式,其中,赋值操作符是“=”或“=”,它分别代表了阻塞赋值和非阻塞赋值类型。
过程赋值语句只能对寄存器类型的变量进行赋值,经过赋值后,上面这些变量的值将保持不变,直到另一条赋值语句对变量重新赋值为止。
5.如果都不带时间延迟、阻塞和非阻塞赋值有何不同?说明它们的不同点?答:代码1:
module test(a,b,c,d,y); //两个与逻辑,1个或逻辑
input a,b,c,d;
output y;
reg y,tmp1,tmp2;
always @(a or b or c or d)// y的值并不等于当前的tmp1,tmp2相或的值,而是等于上 begin一次运算时tmp1,tmp2相或的值。
相当于一个延迟,在第2 tmp1 = ab; 次always模块运行完后得到想要的y值
tmp2 = cd;
y = tmp1|tmp2;
endendmodule
代码2:基本与代码1一样,只是在always的敏感列表中加入了temp1,temp2
module test(a,b,c,d,y);
input a,b,c,d;
output y;
reg y,tmp1,tmp2;
always @(a or b or c or d or tmp1 or tmp2)//与代码一不同,
begin
tmp1 = ab;
tmp2 = cd;
y = tmp1|tmp2;
end
endmodule
代码3:在代码2中加进参数j,来帮助判断always模块的运行次数:
module test(a,b,c,d,y);
input a,b,c,d;
output y;
reg y,tmp1,tmp2;
reg [8:0]j=0;
always @(a or b or c or d or tmp1 or tmp2)
begin
j = j + 1;
#5 //这里加了一个延时,方便分析
tmp1 = ab;
延迟消失了。
tmp2 = cd;
y = tmp1|tmp2;
end
endmodule
首先j从0增至1,为阻塞赋值,然后延迟5,开始下面的非阻塞赋值,然后temp1,temp2得到了新的值,但是y还是并没有更新,而是和代码一中一样保持。
第一次always执行完毕。
由于temp1的值得到了更新,随即再次运行always模块,j从1增加到2,然后延迟5,而此时a,b,c,d的值没有变,因此temp1,temp2没有变
化,但是y却得到了第一次temp1,temp2变化后相或的值,发生
跳变。
由上可以看出,本来只要1次就能完成的组合逻辑,由于采用了非
阻塞赋值,仿真器不得不两次进入always模块,因此可以遵循这样
的原则,写组合逻辑的时候,always中要用阻塞赋值,写时序逻辑
的时候,always模块中要用非阻塞赋值。
(当然不排除为了特殊的
目的不遵循这个建议)
6.defparam命令的使用,模块实例化和模块引用
在一个模块中改变另一个模块的参数时,需要使用defparam命令,高层模块可以改变低层模块用parameter定义的值,改变低层模块
的参数值有以下方式:
(1) defparam 层次路径 = 改变后的值(见书本32页)
(2)实例化时传递参数模块名 #(改变后参数的值)实例名(输
入输出)可以利用defparam命令定义参数,语法结构为:
模块名例化模块名(输入输出);
defparam 例化模块名. 参数名=value;
模块实例引用时参数的传递还可以利用特殊符号“#”,语法结构为:模块名 # (改变后的参数值)例化模块名(输入输出端口)
7.同步清零d触发器和异步清零d触发器
module dff_tongbu (q,d,clk,clr);//同步清零受时钟控制
input d,clk,clr;
output q;
reg q;
always @(negedge clock)
if (clr) q=0;
else q=d;
endmodule
module dff_yibu(q,d,clk,clr);//异步清零不受时钟控制
input d,clk,clr;
output q;
reg q;
always @(clr)
if (clr) q=0;else q=d;
使用同步清零d触发器输出一个周期为10个时间单位的时钟信号:
8. 敏感变量的描述完备性
verilog中,用always模块设计组合逻辑电路时,在赋值表达式右
端参与赋值的所有信号都必须在always@敏感列表中列出。
如果在
赋值表达式右端引用了敏感列表中没有列出的信号,在综合时会为
没有列出的信号隐含地产生一个透明锁存器,这是因为该信号的变
化不会立即引起所赋值的变化,而必须要等到敏感列表中的某个信
号发生变化时,它的作用才表现出来,相当于存在一个透明锁存器,把该信号的变化暂存起来。
【篇二:fpga习题集及参考答案】
一、填空题
1. 一般把eda技术的发展分为()个阶段。
2. fpga/cpld有如下设计步骤:①原理图/hdl文本输入、②适配、
③功能仿真、④综合、
⑤编程下载、⑥硬件测试,正确的设计顺序是①()⑤⑥。
3. 在eda工具中,能完成在目标系统器件上布局布线的软件称为()。
4. 设计输入完成之后,应立即对文件进行()。
5. 基于硬件描述语言的数字系统设计目前最常用的设计方法称为()设计法。
6. 将硬件描述语言转化为硬件电路的过程称为()。
7. ip核在eda技术和开发中具有十分重要的地位,以hdl方式提供
的ip被称为()
ip。
8. soc系统又称为()系统。
sopc系统又称为()系统。
9. 将硬核和固核作为()ip核,而软核作为()ip核。
10. ip核在eda技术和开发中具有十分重要的地位,以hdl方式提
供的ip被称为()。
11. hdl综合器就是逻辑综合的过程,把可综合的vhdl/verilog hdl
转化成硬件电路时,
包含了三个过程,分别是()、()、()。
12. eda软件工具大致可以由五个模块构成,分别是设计输入编辑器、()、()、
()和()。
13. 按仿真电路描述级别的不同,hdl仿真器分为()仿真、()仿真、()
仿真和门级仿真。
14. 系统仿真分为()、()和()。
15. ()仿真是对设计输入的规范检测,这种仿真通过只能表示编译通过,说明设计
满足一定的语法规范,但不能保证设计功能满足期望。
16. ()仿真是对综合后的网表进行的仿真,它验证设计模块的基本逻辑功能,但不
带有布局布线后产生的时序信息,是理想情况下的验证。
17. ()仿真是布局布线后进行的后仿真,仿真时考虑了布线延时,和芯片实际的工
作情况更加接近。
18. 目前xilinx公司生产的fpga主要采用了()配置存储器结构。
19. 描述测试信号的变化和测试工程的模块叫做()。
20. 现代电子系统设计领域中的eda采用()的设计方法。
21. 有限状态机可分为()状态机和()状态机两类。
22. verilog hdl中的端口类型有三类:()、()、输入/输出端口。
23. verilog hdl常用两大数据类型:()、()。
24. fpga / cpld设计流程为:原理图/hdl文本输入→()→综合→
适配→()→
编程下载→硬件测试。
25. ()是描述数据在寄存器之间流动和处理的过程。
26. 连续赋值常用于数据流行为建模,常以()为关键词。
27. verilog hdl有两种过程赋值方式:()和()。
28. `timescale 1ns/100ps中1ns代表(),100ps代表()。
29. 未来的集成电路技术的发展趋势,把整上系统集成在一个芯片上去,这种芯片被称为
()。
30. 从互连结构上可将pld分为确定型和统计型两类。
确定型结构的代表是(),
统计型结构代表是()。
31. cpld是由()的结构演变而来的。
32. fpga的核心部分是(),由内部逻辑块矩阵和周围i/o接口模块组成。
33. 把基于电可擦除存储单元的eeprom或flash 技术的cpld 的在
系统下载称为
(),这个过程就是把编程数据写入e2cmos单元阵列的过程。
34. 根据配置数据线数,器件配置可分为并行配置和串行配置两类。
串行配置以()
为单位将配置数据载人可编程器件:而并行配置一般以()为单位
向可编程器件载入配置数据。
35. fpga的配置模式有从动串行模式、从动并行模式、主动串行模式、主动并行模式、以
及()模式。
36. 可编程逻辑器件的配置方式分为()和()两类。
37. veriloghdl是在()年正式推出的。
38. 在verilog hdl的always块本身是()语句。
39. verilog hdl中的always语句中的语句是()语句。
40. verilog hdl提供了标准的系统任务,用于常用的操作。
如显示、文件输入/输出等,系
统函数前都有一个标志符()加以确认。
41. verilog hdl很好地支持了“自顶向下”的设计理念,即,复杂任
务分解成的小模块完成
后,可以通过()的方式,将系统组装起来。
42. verilog hdl模块分为两种类型:一种是()模块,即,描述某
种电路系统结构,
功能,以综合或者提供仿真模型为设计目的;另一种是()模块,即,为功能模块的测试提供信号源激励、输出数据监测。
43. verilog语言中,标识符可以是任意一组字母、数字、()符号
和下划线符号的组
合。
44. state,state ,这两个标识符是()同。
45. assign c=ab? a: b中,若a=3,b=2,则c=();若a=2,b=3,则
c=()。
46. 在verilog hdl的逻辑运算中,设a=4′b1010,则表达式~a的结
果为()
47. 在verilog hdl的逻辑运算中,设a=2 ,b=0,则a b结果为(), a || b 结
果为()。
48. 在verilog hdl的逻辑运算中,设a = 4′b1010, a 1结果是()。
二、 eda名词解释
1. asic,
2.cpld,
3.fpga,
4.ic,
5.lut .
6.pcb.
7.rtl,
8.fsm,
9.gal,10.isp,
11.jatg,
12.pbd,13.bbd
三、选择题
1.任verilog hdl的端口声明语句中,用()关键字声明端口为双向端口
a:inout b:inout c:buffer d:buffer
2.用verilog hdl的assign语句建模的方法一般称为()方法。
a:连续赋值b:并行赋值 c:串行赋值 d:函数赋值
3. ip核在eda技术和开发中具有十分重要的地位,ip是指()。
a:知识产权b:互联网协议c:网络地址 d:都不是
4.在verilog hdl的always块本身是()语句
a:顺序 b:并行 c:顺序或并行 d:串行
5.在verilog hdl的逻辑运算中,设
a=8b11010001,b=8b00011001,则表达式“ab”的结果
为()
a:8b00010001 b:8b11011001 c:8b11001000d:8b00110111 6.大规模可编程器件主要有fpga、cpld两类,下列对fpga结构与工作原理的描述中,
正确的是()。
a:fpga是基于乘积项结构的可编程逻辑器件;
b:fpga是全称为复杂可编程逻辑器件;
c:基于sram的fpga器件,在每次上电后必须进行一次配置;
d:在altera公司生产的器件中,max7000系列属fpga结构。
7.下列eda软件中,哪一个不具有逻辑综合功能:()。
a: ise b: modelsim c: quartus ii d:synplify
8.下列标识符中,()是不合法的标识符。
a: state0 b: 9moon c: not_ack_0 d: signal@
9.关于verilog hdl中的数字,请找出以下数字中最大的一个:()。
a:8′b1111_1110 b:3′o276 c:3′d170d:2′h3e
10.大规模可编程器件主要有fpga、cpld两类,下列对cpld结构与工作原理的描述中,
正确的是()。
a:cpld是基于查找表结构的可编程逻辑器件;
b:cpld即是现场可编程逻辑器件的英文简称;
c:早期的cpld是从gal的结构扩展而来;
d:在xilinx公司生产的器件中,xc9500系列属cpld结构;
11. ip核在eda技术和开发中具有十分重要的地位;提供用vhdl 等硬件描述语言描述的
功能块,但不涉及实现该功能块的具体电路的ip核为()。
a :瘦ip b:固ipc:胖ip d:都不是
12.不完整的if语句,其综合结果可实现()。
a:时序逻辑电路 b:组合逻辑电路 c:双向电路 d:三态控制电路
13. cpld的可编程是主要基于什么结构()。
a :查找表(lut) c: pal可编程 b: rom可编程 d:与或阵列可编程
14. ip核在eda技术和开发中具有十分重要的地位,以hdl方式提供的ip被称为:()
a:硬ipb:固ip c:软ipd:都不是;
15.设a = 4′b1010,b=4′b0001,c= 4′b1xz0则下列式子的值为1的是()
a:a bb:a = c c:13 - a bd:13 – (ab)
16.设a=2 ,b=0,则下列式子中等于x的是()。
a: a bb: a || b c: !a d: x a
17. fpga可编程逻辑基于的可编程结构基于()。
a: lut结构 b:乘积项结构 c:pldd:都不对
18. cpld 可编程逻辑基于的可编程结构基于()。
a: lut结构b:乘积项结构 c: pld d:都不对
19.下列运算符优先级最高的是()。
a:! b: + c :d:{}
20.设a = 1′b1,b = 3′b101,c = 4′b1010则x= {a,b,c}的值的等于()
a:7′b1101100 b:8′b 10101011 c:8′b 11010101 d:
8′b11011010
21.将设计的系统按照eda开发软件要求的某种形式表示出来,并送入计算机的过程,称
为()。
a:设计的输入 b:设计的输出 c:仿真 d:综合
22.一般把eda技术的发展分为()个阶段。
a:2 b: 3 c:4 d:5
23.设计输入完成之后,应立即对文件进行()。
a:编译 b:编辑 c:功能仿真 d:时序仿真
24. vhdl是在()年正式推出的。
a:1983 b:1985c:1987d:1989
25. verilog hdl是在()年正式推出的。
a:1983 b:1985c:1987d:1989
26.基于硬件描述语言的数字系统设计目前最常用的设计方法称为()设计法。
a:自底向上 b:自顶向下c:积木式 d:顶层
27.在eda工具中,能将硬件描述语言转化为硬件电路的重要工具软件为()。
a:仿真器b:综合器 c:适配器 d:下载器
28.在eda工具中,能完成在目标系统器件上布局布线的软件称为()。
a:仿真器b:综合器 c:适配器 d:下载器
29.逻辑器件()属于非用户定制电路。
a:逻辑门 b: promc:pla d:gal
30.可编程逻辑器件pld属于()电路。
a:半用户定制b:全用户定制 c:自动生成d:非用户定制
31.不属于pld基本结构部分的是()。
a:与门阵列b:输入缓存 c:与非门阵列D:或门阵列
32.任verilog hdl的标识符使用字母的规则是()。
a:大小写相同b:大小写不同 c:只允许大写 d:只允许小写
33.操作符是verilog hdl预定义的函数命名,操作符是由()字符组成的。
a:1b:2 c:3d:1~3
34.在verilog hdl模块中,task语句类似高级语言中的()。
a:函数b:常数c:变量d:子程序
35.在verilog hdl模块中,函数调用时返回一个用于()的值。
a:表达式 b:输出c:输入 d:程序包
36. verilog hdl中的always语句中的语句是()语句。
a:串行b:顺序 c:并行d:顺序或并行
37.嵌套的if语句,其综合结果可实现()。
a:条件相与的逻辑b:条件相或的逻辑c:条件相异或的逻辑d:三态控制电路
38.嵌套的使用if语句,其综合结果可实现()。
a:带优先级且条件相与的逻辑电路b:双向控制电路
c:三态控制电路d:条件相异或的逻辑电路
39.下列哪个fpga/cpld设计流程是正确的()。
a:原理图/hdl文本输入-功能仿真-综合-适配-编程下载-硬件测试
b:原理图/hdl文本输入-适配-综合-功能仿真-编程下载-硬件测试c:原理图/hdl文本输入-功能仿真-综合-编程下载-适配-硬件测试
d:原理图/hdl文本输入-适配-功能仿真-综合-编程下载-硬件测试
四、简答题
1.简述eda技术的发展历程?
2.什么是eda技术?
3.在eda技术中,什么是自顶向下的设计方法?
4.自顶向下的设计方法有什么重要意义?
5.简要说明目前现代数字系统的发展趋势是什么?
6.简述现代数字系统设计流程。
7.简述原理图设计法设计流程。
8.简述原理图设计法设计方法的优缺点。
9.什么是综合?综合的步骤是什么?
10.什么是基于平台的设计?现有平台分为哪几个类型?
11.目前,目前数字专用集成电路的设计主要采用三种方式?各有
什么特点?
12.什么是soc技术含义是什么?什么是sopc?
13.sopc技术含义是什么?sopc技术和soc技术的区别是什么? 14. sopc技术是指什么?sopc的技术优势是什么?
15.简要说明一下功能仿真和时序仿真的异同。
设计过程中如果只
做功能仿真,不做时序仿
真,设计的正确性是否能得到保证?
16.综合完成的主要工作是什么?实现(implement)完成的主要
工作是什么?
17.主要的hdl语言是哪两种?verilog hdl 语言的特点是什么?
18.简述阻塞赋值与非阻塞赋值的不同。
19.简述过程赋值和连续赋值的区别。
20.什么叫做ip核?ip在设计中的作用是什么?
21.什么是ip软核,它的特点是什么?
22.根据有效形式将ip分为哪几类?根据功能方面的划分分为哪两类?
23.比较基于查找表的fpga和cpld系统结构和性能上有何不同? 24.什么是数据流级建模?什么是行为级建模?
25. timescale指令的作用是什么。
26.采用hdl完成设计后,必须应用测试程序(testbench)对设计的正确性进行验证。
测
27.什么是fpga,cpld?他们分别是基于什么结构的可编程逻辑结构?
28. cpld是基于什么结构的可编程逻辑器件?其基本结构由哪几部分组成。
29. fpga是于什么结构的可编程逻辑器件?其基本结构由哪几部分组成。
30. pld器件按照编程方式不同,可以分为哪几类?
31.解释编程与配置这两个概念。
32.说明fpga配置有哪些模式,主动配置和从动配置的主要区别是什么?
33.为什么在fpga构成的数字系统中要配备一个prom或
e2prom?
五、程序补充完整
1.下面程序是一个3-8译码器的veriloghdl描述,试补充完整。
空(1) decoder_38(out,in)
output[7:0] out;
input[2:0] in;
reg[7:0] out
空(2)@(in)
begin
(in)
3′d0:out=8′b11111110;
3′d1:out=8′b11111101;
【篇三:fpga题及答案】
件:软件:);掌握一种语言。
2、使用quartus ii进行逻辑设计,常用的设计思想的输入方式有:原理图、等。
3、高级语言c程序经过软件程序编译器形成cpu指令/数据代码流;verilog hdl程序经过综合器形成电路网表文件
4、cpld是在pal,gal等类型器件的基础上发展起来的与或阵列型pld器件,大多数fpga采用了查找表结构,其物理结构是静态存储
器sram.。
5、jtag边界扫描技术用于对高密度、引脚密集的器件和系统进行测试,如:cpu,dsp,arm,pld等。
同时,jtag接口也被赋予了更
多的功能:编程下载、在线逻辑分析。
6、使用verilog hdl进行逻辑设计,变量的值有4种状态:0、1、x、z;
7、定义逻辑功能的几种基本方法:用assign持续赋值语句定义、
用always过程块定义、调用元件(元件例化)。
8、整数按如下方式书写:+/-size basevalue 即 +/-位宽进制数字size 为对应二进制数的宽度;base为进制;value是基于进制的数
字序列。
进制有如下4种表示形式:
二进制(b或b)、十进制(d或d或缺省)、十六进制(h或h)、八进制(o或o)
9、定义reg型标量型变量: //变量名 qout
10、定义wire型向量://databus的宽度是8位
11、在状态机设计中使用一位热码定义5种状态,并定义状态变量:
12、在状态机设计中使用顺序码定义5种状态,并定义状态变量:
1、成为ieee标准的hdl有
2、quartus ii 是(a )公司的( d)开发工具。
3、modelsim 是mentor公司的出色的仿真软件,它属于编译型
(仿真)器,速度快,功能强。
4、使用altera 公司的quartus ii 和fpga器件能够进行数字电路设计、dsp设计、sopc设计
5、使用verilog hdl进行逻辑设计,端口类型有
6、使用verilog hdl进行逻辑设计,可综合的变量类型有
7、a=5`b11001; b=5`b10101;下面那个是正确的
8、下面那些语句可以被综合成电路 b、alwaysc、assignd、
`definee、for
module voter7(pass,vote);
output pass;
input[6:0] vote;
reg[2:0] sum;integer i;reg pass;
always @(vote)
beginsum=0;
for(i=0;i=6;i=i+1) //for语句
if(vote[i]) sum=sum+1;
if(sum[2]) pass=1;//超过4人赞成,则通过
else pass=0;
end endmodule
②8、4选1数据选择器
module mux4_1(out,in0,in1,in2,in3,sel);
output out;
input in0,in1,in2,in3;
input[1:0] sel; reg out;
always @(in0 or in1 or in2 or in3 or sel)
//敏感信号列表
case(sel)
2b00:
2b01:
out=in0; out=in1;
2b10: out=in2;
2b11: out=in3;
default: out=x;
endcase endmodule
③13、带同步清0/同步置1(低电平有效)的d触发器
module dff_syn(q,qn,d,clk,set,reset);
input d,clk,set,reset; output reg q,qn;
always @(posedge clk)
begin
if(~reset) begin q=1b0;qn=1b1;end
//同步清0,低电平有效
else if(~set) begin q=1b1;qn=1b0;end
//同步置1,低电平有效
else begin q=d; qn=~d; end
end
endmodule
④14、带异步清0/异步置1(低电平有效)的d触发器
module dff_asyn(q,qn,d,clk,set,reset);
input d,clk,set,reset; output reg q,qn;
always @(posedge clk or negedge set or negedge reset) begin
if(~reset) begin q=1b0;qn=1b1; end
//异步清0,低电平有效
else if(~set) begin q=1b1;qn=1b0; end
//异步置1,低电平有效
elsebegin q=d;qn=~d; end
end endmodule
⑤18、分频器设计(偶数等占空比分频;1:15占空比分频)
a、
module div6(clk,rst,clk6);
input rst,clk;
output clk6;
reg clk6;
reg [1:0] cnt;
always@(posedge clk or posedge rst)
begin
if(rst==1’b1)
cnt=2’b00;
else if(cnt==2)begin
cnt=2’b00;
clk6=~clk6;
end
else cnt=cnt+1;
end
endmodule
b、
module div1_15(clk,rst, clk16);
input rst,clk;
output clk16;
reg clk16;
reg [3:0] cnt;
always@(posedge clk or posedge rst)
begin
if(rst==1’b1)
cnt=4’b0000;
else cnt=cnt+1;
end
always@(posedge clk or posedge rst)
begin
if(rst==1’b1)
clk16=1’b0;
else if(clk16==15)
clk16=1’b1;
else clk16=1’b0;
end
endmodule
⑥19、画出状态转移图,并采用有限状态机设计一个彩灯控制器,要求控制8个led灯实现如下的演示花型:
从两边往中间逐个亮;全灭;从中间往两头逐个亮;全灭;循环执行上述过程
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity sfwy is
port(clk:in std_logic;
led: out std_logic_vector(7 downto 0));
end;
architecture one of sfwy is
signal led_r: std_logic_vector(8 downto 0);
signal tmp:std_logic_vector(25 downto 0);
signal q:std_logic;
begin
begin
if clk event and clk=1then tmp=tmp+1;
end if;
end process;
q=tmp(25);
led=led_r(7 downto 0);
process(q)
begin
if qevent and q=1then
led_r=led_r(7 downto 0) 0;
if led_r=000000000 then--循环完毕吗? led_r=111111111;--是,则重新赋初值
end if;
end if;
end process; end one;
⑦20、画出状态转移图,并采用有限状态机设计一个“1001”串行数据检测器。
其输入、输出如下所示:输入x:000 101 010 010 011 101 001 110 101
输出z:
000 000 000 010 010 000 001 000 000
初始状态设为s0,此时检测数据序列为“0000”,当再检测到一个0时,仍为s0,当检测到1时,进入下一个状态s1,此时序列为“0001”;当在状态s1检测到0时,进入到状态s2,此时序列为“0010”,。