设计一个串行数据检测电路. 当连续出现4个和4个以上的1时, 检测输出信号为1, 其余情况下的输出信号为0(设计1111序列检测电路)

 题目: 设计一个串行数据检测电路. 当连续出现4个和4个以上的1时, 检测输出信号为1, 其余情况下的输出信号为0.

分析: 

        从题目的表述中, 我们获取到信息, 连续出现4个或4个以上的1时, 输出信号为1, 否则为0: 实际上是让我们设计一个1111序列检测电路. 对于问题的转换十分重要, 若此处不能将问题转换为设计1111序列检测电路, 那电路的设计难度将会很大.

        既然已经将问题转化为1111序列检测电路的设计, 那我们进入到设计序列检测电路的设计模板中来:

①确定状态个数: 

        1111序列检测电路至少需要5个状态, 我们先将这5个状态设为S0、S1、S2、S3、S4.

②根据1111序列检测的特性, 绘制原始状态图(此处读者不要过多思虑, 只需要按照感觉设计即可).

③将原始状态图转换为原始状态表.

④从原始状态表中寻找等价状态, 并化简原始状态表.

        从原始状态表中, 我们可以看出, S3、S4为等价状态, 则将S4行删除, 并将剩下部分出现S4的地方用S3代替.

⑤根据化简后的状态表, 绘制状态图:

课程设计任务书 学生姓名 胡俊 学生专业班级 计 算 机0801 指导教师 王莹 学 院 名 称 计算机科学与技术学院 一、题目:“1 1 1序列检测器。 原始条件:使用D触发器( 74 LS 74 )、“与”门 ( 74 LS 08 )、“或”门( 74 LS 32 )、非门 ( 74 LS 04 )设计1 1 1序列检测器。 二、要求完成设计的主要任务如下: 1.能够运用数字逻辑的理论方法,把序逻辑电路设计组合逻辑电路设计相结合,设计一个有实际应用的数字逻辑电路。 2.使用同步序逻辑电路设计方法,设计1 1 1序列检测器。写出设计中的5个过程。画出课程设计图。 3.根据74 LS 74、74 LS 08、74 LS 32、74 LS 04集成电路引脚号,在设计好的“1 1 1序列检测器电路图中标上引脚号。 4.在试验设备上,使用74 LS 74、74 LS 08、74 LS 32、74 LS 04集成电路连接、调试测试“1 1 1序列检测器电路。 三、实验设计过程: 第1步,画出原始状态图状态表。 根据任务书要求,设计序列检测器一个外部输入x一个外部输出Z。输入输出的逻辑关系为:当外部输入x第一个为“1”,外部输出Z为“0”;当外部输入x第二个为“1”,外部输出Z为“0”;当外部输入x第三个为“1”,外部输出Z才为“1”。假定有一个外部输入x序列以及外部输出Z为: 输入x: 0 1 0 1 1 1 0 1 1 1 1 0 1 输出Z: 0 0 0 0 0 1 0 0 0 1 1 0 0 要判别序列检测器是否连续接收了“111”,电路必须用不同的状态记载外部输入x的值。假设电路的初始状态为A,x输入第一个1”,检测器状态由A装换到B,用状态B记载检测器接受了111序列的第一个1”,这外部输出Z=0;x输入第二个“1”,检测器状态由B装换到C,用状态C记载检测器接受了111序列的第二个“1”,外部输出Z=0;x输入第三个“1”,检测器状态由C装换到D,外部输出Z=1。然后再根据外部输入及其他情况的状态转移,写出相应的输出。以上分析了序列检测器工作,由此可画出图7-1所示的原始状态图。根据原始状态图可列出原始状态表,如表7-2所示。
一、实验目的: 1、深入了解与掌握同步序逻辑电路设计过程; 2、了解74LS74、74LS08、74LS32及74LS04芯片的功能; 3、能够根据电路图连接好实物图,并实现其功能。学会设计过程中的检验与完善。 二、实验内容描述: 题目:“1 1 1序列检测器。 原始条件:使用D触发器( 74 LS 74 )、“与”门 ( 74 LS 08 )、“或”门( 74 LS 32 )、非门 ( 74 LS 04 )设计1 1 1序列检测器。 集成电路引脚图: D触发器( 74 LS 74 ) “与”门 ( 74 LS 08 ) “或........ 三、实验设计过程: 第1步,画出原始状态图状态表。 根据任务书要求,设计序列检测器一个外部输入x一个外部输出Z。输入输出的逻辑关系为:当外部输入x第一个为“1”,外部输出Z为“0”;当外部输入x第二个为“1”,外部输出Z为“0”;当外部输入x第三个为“1”,外部输出Z才为“1”。假定有一个外部输入x序列以及外部输出Z为: 输入x: 0 1 0 1 1 1 0 1 1 1 1 0 1 输出Z: 0 0 0 0 0 1 0 0 0 1 1 0 0 要判别序列检测器是否连续接收了“111”,电路必须用不同的状态记载外部输入x的值。假设电路的初始状态为A,x输入第一个1”,检测器状态由A装换到B,用状态B记载检测器接受了111序列的第一个1”,这外部输出Z=0;x输入第二个“1”,检测器状态由B装换到C,用状态C记载检测器接受了111序列的第二个“1”,外部输出Z=0;x输入第三个“1”,检测器状态由C装换到D,外部输出Z=1。然后再根据外部输入及其他情况的状态转移,写出相应的输出。以上分析了序列检测器工作,由此可画出图7-1所示的原始状态图。根据原始状态图可列出原始状态表,如表7-2所示。 现态 次态/输出 x = 0 x = 1 A A / 0 B / 0 B A / 0 C / 0 C A / 0 D / 1 D A / 0 D / 1 (表 7-2 原始状态表) (图
好的,这是一个经典的串行数据检测电路。我们可以采用有限状态机的思想来设计它。 首先,需要定义一些状态。我们可以把当前数据位之前的4位作为一个状态,一共有16种可能的状态。为了简化设计,我们可以把所有状态编号为015。在每个钟周期,当前状态会根据输入数据位更新。如果当前状态是15,表示前4位都是1,那么检测输出信号1;否则输出信号0。 下面是一个基于Verilog的实现代码: ``` module SerialDetector( input clk, input reset, input data, output reg detection_output ); parameter STATE_IDLE = 4'd0; parameter STATE_1 = 4'd1; parameter STATE_2 = 4'd2; parameter STATE_3 = 4'd3; parameter STATE_DETECTION = 4'd15; reg [3:0] state; always @(posedge clk) begin if (reset) begin state <= STATE_IDLE; detection_output <= 0; end else begin case (state) STATE_IDLE: begin if (data == 1) begin state <= STATE_1; end else begin state <= STATE_IDLE; end end STATE_1: begin if (data == 1) begin state <= STATE_2; end else begin state <= STATE_IDLE; end end STATE_2: begin if (data == 1) begin state <= STATE_3; end else begin state <= STATE_IDLE; end end STATE_3: begin if (data == 1) begin state <= STATE_DETECTION; detection_output <= 1; end else begin state <= STATE_IDLE; end end STATE_DETECTION: begin if (data == 0) begin state <= STATE_IDLE; detection_output <= 0; end else begin state <= STATE_DETECTION; end end endcase end end endmodule ``` 在这个代码中,我们使用了一个状态寄存器 `state` 来记录当前状态。在每个钟上升沿,根据当前状态输入数据位更新状态,并根据状态更新检测输出信号。当输入 `reset` 信号1,状态寄存器被重置为初始状态,并且检测输出信号0。 上述代码只是一个基本的实现,可能还需要进行一些修改优化,例如添加同步复位、添加输入数据的缓冲等等。但是这个基本思路是正确的。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好梦成真Kevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值