设计一个1010的序列检测器

合集下载

verilog-10101状态机序列检测器的设计

verilog-10101状态机序列检测器的设计
always @ (in or state) begin case(state) S0:
begin if (in) begin next_state <= S1; out = 1'b0; end else
begin next_state <= S0; out = 1'b0; end
end S1:begin if (in) begin
initial begin //time clk = 0; forever #50 clk = ~clk; end
initial begin in = 0; reset = 1; #200 reset = 0;
#50 in = 1;#100 in = 0;#100 in = 1; #100 in = 0;#100 in = 1;#100 in = 0; #100 in = 1;#100 in = 1;#100 in = 1; #100 in = 1;#100 in = 0;#100 in = 1; #100 in = 1;#100 in = 1;#100 in = 1; #100 in = 1;#100 in = 0;#100 in = 1; #100 in = 0;#100 in = 1;#100 in = 0; end xulie10101 m( .in(in),
2这个运算并没有赋给任何变量注释后效果也一样请问这行代码的用处是什么
verilog-10101状 态 机 序 列 检 测 器 的 设 计
首先,画出状态转移图
代码:
module xulie10101 #( parameter S0 = 3'b000,//状态定义 parameter S1 = 3'b001, parameter S2 = 3'b010, parameter S3 = 3'b011, parameter S4 = 3'b100 ) ( input in, input clk, input reset, output out );

时序电路设计-101序列检测器

时序电路设计-101序列检测器

数字逻辑设计及应用课程设计报告姓名:雷蕾学号:2010012030036选课号:设计题号: 5一.设计题目:设计101序列检测器二.设计要求要求使用状态机设计一个序列检测器,检测输入数据,当输入中出现101时,输出1,否则输出为0。

不进行重复判断,即当出现10101…时,输出为00100…判断的具体流程如下:1.电路复位,进入状态S0,等待输入2.S0状态下:如果输入为0,则停留在S0,如果输入为1,则跳转到S13.S1状态下:如果输入为0,则跳转到S2,如果输入为1,则停留在S14.S2状态下:如果输入为1,则输出1,并跳转到S0,如果输入为0,则输出0,并跳转到S0检测器电路实现:时钟信号,1 bit输入待判断信号,1bit输出判断结果。

三.设计过程1.设计方案:通过使用ISE编写verilog语言,实现以下过程:1s3只有当s3接收到的输入信号为1的时候,输出才会为1,其余时候输出都为0.2.设计程序:模块文件:`timescale 10ns/1ns//////////////////////////////////////////////////////////////////////////////////// Company:// Engineer://// Create Date: 21:02:40 06/06/2012// Design Name:// Module Name: abcd// Project Name:// Target Devices:// Tool versions:// Description://// Dependencies://// Revision:// Revision 0.01 - File Created// Additional Comments://////////////////////////////////////////////////////////////////////////////////// module abcd(input reset,input clk,input ipt,output reg result);parameter [1:0] s0 = 2'b00, s1 = 2'b01, s2 = 2'b10;reg[1:0] state;always @ (posedge clk)beginif(reset)beginstate<=s0;result<=0;endelsebegincase(state)s0:beginif(ipt==0)beginstate<=s0;result<=0;endelse.beginstate<=s1;result<=0;endends1:beginif(ipt==0)beginstate<=s2;result<=0;endelsebeginstate<=s1;result<=0;endends2:beginif(ipt==0)beginstate<=s0;result<=0;endelsebeginstate<=s0;result<=1;endenddefault:beginstate<=s0;result<=0;endendcaseendendendmodule测试文件:`timescale 10ns / 1ps////////////////////////////////////////////////////////////////////////////// //// Company:// Engineer://// Create Date: 23:05:50 06/06/2012// Design Name: test_detector// Module Name: D:/TDDOWNLOAD/fortwo2/haha.v// Project Name: fortwo2// Target Device:// Tool versions:// Description://// Verilog Test Fixture created by ISE for module: test_detector//// Dependencies://// Revision:// Revision 0.01 - File Created// Additional Comments://////////////////////////////////////////////////////////////////////////////// //module haha;module test_detector();reg clk;reg reset;reg ipt;wire result;reg[20:0] indata=20'b101001110011011110110;integer i;initial clk=1;always #1 clk=~clk;initialbeginreset=1;ipt=0;#4reset=0;for(i=0;i<21;i=i+1)beginipt=indata[i];#2;end#10$stop;endabcd detector_instance(.clk(clk),.reset(reset),.ipt(ipt),.result(result));endmodule3.仿真结果四.设计结论(包括:设计结果分析、设计中遇到的问题、设计心得和体会等) 1.设计结果分析:以时钟信号的一个周期为基准,有仿真结果可看出,当输入(ipt)为连续的一个周期高一个周期的低一个周期的高(即101)时,输出(result)为高。

实验三 序列信号检测器的设计

实验三  序列信号检测器的设计

实验三序列信号检测器的设计一、实验目的:1、理解序列信号检测器的工作原理;2、掌握原理图和文本输入的混合设计输入方法;3、理解状态划分;4、掌握状态机程序的编写方法;二、实验原理:序列检测器是时序数字电路中非常常见的设计之一。

它的主要功能是:将一个指定的序列从数字码流中识别出来。

接下来的设计就是针对“011”这个序列的检测器。

设input为数字码流输入,output为检出标记输出,高电平表示“发现指定序列”,低电平表示“没有发现指定的序列”。

设输入的码流为“001101101111011111...”,在时钟2~4中,码流input里出现指定序列“011”,对应输出output在第4个时钟变为高电平“1”,表示发现指定"011”,以此类推。

序列发生器模块采用的是M(n=4)序列发生器,详细可以参考《EDA技术与应用》一书的4.4团队协作及逻辑锁定。

三、实验内容(1)最终的顶层设计原理图如下:左侧的四个D触发器组成的电路为M序列信号发生器模块,它可以产生15位随机的二进制码流。

发生器产生的二进制码流每隔15个时钟周期重复出现一次。

详细的可以在最终的时序仿真图中看出来。

右侧的get_str模块为检测模块,给予状态机的结构编写的,具体如下:library ieee;use ieee.std_logic_1164.all;entity get_ser isport(clk : in std_logic;input : in std_logic;reset : in std_logic;serout : out std_logic_vector(1 downto 0);output : out std_logic);end entity;architecture rtl of get_ser is-- Build an enumerated type for the state machine type state_type is (s0, s1, s2, s3);-- Register to hold the current statesignal state : state_type;beginserout <= ('0'&input);-- Logic to advance to the next stateprocess (clk, reset)beginif reset = '1' thenstate <= s0;elsif (rising_edge(clk)) thencase state iswhen s0=>if input = '0' thenstate <= s1;elsestate <= s0;end if;when s1=>if input = '1' thenstate <= s2;elsestate <= s1;end if;when s2=>if input = '1' thenstate <= s3;elsestate <= s1;end if;when s3 =>if input = '1' thenstate <= s0;elsestate <= s1;end if;end case;end if;end process;-- Output depends solely on the current state process (state)begincase state iswhen s0 =>output <= '0';when s1 =>output <= '0';when s2 =>output <= '0';when s3 =>output <= '1';end case;end process;end rtl;(2)理解状态机请根据上图对照get_str程序理解检测“011”序列的基本编程思路。

序列检测器实验报告

序列检测器实验报告

序列检测器设计实验内容:设计一个1110010序列检测器,即检测器检测到序列1110010时,输出为1,否则输出为0。

输入信号:一个时钟输入信号clk;一个输入端x以输入序列来检测;一个输入y用来选择是检测序列1110010或是检测自己输入的序列;一个输入k(7..0)用来输入想要检测器检测的序列;输出信号:一个7位输出信号q,用来输出正在检测的7位序列;一个1位输出信号unlk,当被检测序列符合时,输出unlk为1否则为0;中间信号:再定义两个7位的中间信号a和combination;执行操作:在上升的时钟沿时候,将从x输入的序列赋给7位a,在y等于1的情况下,令中间信号combination为1110010,否则,在y等于0的情况下,令中间信号combination为从k输入的七位长序列。

最后把a的值赋给q,如果a与combination输出unlk等于1否则等于0。

(1)序列检测器语言设计:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;USE IEEE.STD_LOGIC_ARITH.ALL;entity xulie2 isport (clk,x:in std_logic;y:in std_logic;k:in std_logic_vector(7 downto 1);unlk:out std_logic;q:out std_logic_vector(7 downto 1)); end xulie2;architecture art of xulie2 issignal a:std_logic_vector(7 downto 1);signal combination: std_logic_vector(7 downto 1);beginprocess(clk)beginif clk'event and clk='1' thena<=a(6 downto 1)&x;if y='1' thencombination<="1110010";else combination<=k;end if;end if;q<=a;end process;unlk<='1' when(a=combination) else '0';end art;序列检测器波形图:其中ENDTIME=10.0us GRIDSIZE=100.0ns波形图分析:如图,选择输入端y输入为1时,q对应着输出从x输入的7位序列,如果从x输入的待检测的7位序列为1110010时,unlk为1,否则为0,当选择输入端y输入为0时,q依旧对应着输出从x输入的待检测的当前7为序列,但是只有当从x输入的7为序列与从k输入的7位序列一致时,输出端unlk才为1,否则为0。

1011序列发生器和检测器的设计实现

1011序列发生器和检测器的设计实现

1011序列发生器和检测器的设计实现摘要序列信号是指在同步脉冲作用下循环地产生一串周期性的二进制信号.能产生这种信号的逻辑器件就称为序列信号发生器.根据结构不同,它可分为反馈移位型和计数型两种.1.移位型序列信号发生器的组成移位型序列信号发生器是由移位寄存器和组合电路两部分构成,组合电路的输出,作为移位寄存器的串行输入。

由n位移位寄存器构成的序列信号发生器所产生的序列信号的最大长度为:P=2n2.计数型序列信号发生器组成与特点计数型序列信号发生器能产生多组序列信号,这是移位型发生器所没有的功能.计数型序列信号发生器是由计数器和组合电路构成的,序列的长度P就是计数器的模数。

3.D触发器构成的序列信号发生器序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。

由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,知道在连续的检测中所收到的每一位码都与预置数的对应码相同。

在检测过程中,任何一位不相等都将回到初始状态重新开始检测。

我们采用的是计数型序列信号发生器。

利用计数器与数据选择器构成1011序列发生器,1011序列检测器——上面的输出端,接入一个74LS194移位寄存器再接一个4输入与门,数字0那端输入前加一个非门,这样检测到1011时输出1,其余结果均输出0.然后并用MUX+plus2进行仿真。

关键字1011,序列发生器,检测器,74LS194,数据选择器,74LS163,74LS151一. 总设计序列检测器也称为串行数据检测器,它在数据通讯,雷达和遥测等领域中用于检测同步识别标志,是一种用来检测一组或多组序列信号的电路。

本文输入的序列信号由计数器和数据选择器组成的序列信号发生器提供。

74LS194 74LS163计数器是一种含有若干个触发器、并按预定顺序改变各触发器的状态,累计输入脉冲个数的数字电路。

数字逻辑模拟试卷附答案

数字逻辑模拟试卷附答案

XX 大 学 试 题课程名称 数字逻辑电路设计 开课学院使用班级 考试日期苏 大 学 试题 第3 页苏大 学 试题第4 页四、根据下图波形写出其逻辑关系表达式Z=F(A,B,C) (10分)A B C Z五、分析题:某同步时序逻辑电路如图所示。

(12分)(1) 写出该电路激励函数和输出函数; (2) 画出输出矩阵和激励矩阵; (3) 画出状态表和状态图;(4)设各触发器的初态均为0,试画出下图中Q1、Q2和Z 的输出波形。

数字逻辑模拟试卷2答案一、填空题(每空1分,计20分) 1、(45)6=(35)8=(11101)2=(00101001)84212、若X= 138/512,则[X]反=(0.01000101),[-X]补=(1.10111011)。

3、若[X]补=101100,则X=(-100100),[X/2]补=(110110)。

4、若X=10100110,[X]Gray 码=(11110101)。

5、用n 位补码(含一位符号位)表示定点整数,其表示的数值范围是(-2n-1~2n-1-1)6、VHDL 程序一般由(实体)和结构体两部分组成,其中结构体的基本描述方法有(数据流描述法)、行为描述法和结构描述法。

7、信息码1010对应的奇校验汉明码的长度是(7位)。

8、函数F= A+BC 的反函数是()(C B A )。

9、集成芯片的集成度是以(等效门电路的数量)来衡量的。

10、三态门的三种输出状态是高电平、低电平和(高阻状态)。

11、正负逻辑的约定中,正逻辑是指(高电平表示1;低电平表示0)。

12、触发器的触发方式有直接电平触发、电平触发和(脉冲触发)、(边沿触发)几种。

13、对组合逻辑电路而言,PLD 的理论依据是(任何组合逻辑函数都可以用与-或式表示)。

14、ISP 指的是(在系统可编程技术)二、选择题(每题有一个或多个正确答案,每题1分计10分)1、A2、D3、B ,C4、A ,D5、A ,B ,D6、A ,B ,C7、A ,B ,C8、B9、B ,D 10、C 三、按要求化简下列函数(14分)1.用代数法求函数 F = A B + A B C + B C 的最简“与-或”表达式。

lab10_0101序列检测器仿真(ModelSim)

lab10_0101序列检测器仿真(ModelSim)

0101序列检测器仿真(ModelSim)1.实验目的熟悉Modelsim仿真软件的使用方法,了解状态机的建模方法,使用ModelSim仿真QuartusII工程。

2.实验内容●用HDL语言的输入方式,实现0101/110序列检测器。

●用modelsim进行仿真●下载至DE0开发板上观察实验结果3.代码分析(以0101序列检测器为例)1)状态图如下:图3.1 0101(左)/110(右)序列检测状态图2)主模块中首先定义了本次实验的所有输入输出接口及各个状态。

其中,因为有4种状态,所以current为2位。

//0101 Sequential detectormodule lab1a (vin,cp,ncr,vout);input vin,cp,ncr;output vout;reg vout;reg [1:0] current,next;parameter s0=2'b00,s1=2'b01,s2=2'b10,s3=2'b11;3)然后设置异步清零,在cp上升沿则沿触发器状态翻转。

always @(posedge cp or negedge ncr)beginif (~ncr)current <= s0;elsecurrent <= next;end4)接着编写组合逻辑部分,设定下一状态产生和输出的信号。

always @(current or vin)beginnext=2'bxx;case (current)s0:begin next = (vin==1)?s0:s1; ends1:begin next = (vin==1)?s2:s1; ends2:begin next = (vin==1)?s0:s3; ends3:begin next = (vin==1)?s2:s1; endendcaseend5)最后为输出部分,本程序中设置让输出信号经过一个寄存器再输出,可以消除vout信号中的毛刺。

(完整word版)二进制序列1010检测器正确电路

(完整word版)二进制序列1010检测器正确电路

设计一个序列检测器,用来检测输入的串行二进制序列,每当输入序列1010时,检测器输出为1,否则输出为0。

解:进行逻辑抽象,得出原始状态转换图和状态转换图。

设输入为X,输出为Z,设定初态为S0;电路输入一个1后状态为S1;电路再输入一个0以后的状态为S2;电路再输入一个1以后的状态为S3;电路再输入一个0以后的状态为S4;原始状态转换图如下:
原始状态图
状态表如下:
最简状态表如下:
状态编码:上表共有4中状态,可用两位二进制代码代码来表示,设状态变量为Y2和Y1;依据状态编码的原则,可以确定:
(1)S0和S1、S1和S3、S0和S3、S0和S2应相邻编码;
(2)S0和S1、S2和S1、S0和S3应相邻编码;
(3)S0、S1、S2应相邻编码;
(4)S1应取0编码;
最后得到,S1=00,S0=11,S2=10,S3=01
又上表可知,输出方程:Z=Y2Y1n X
用卡诺图对Y2n +1、Y1n+1进行化简,卡诺图如下:
状态方程2:Y2n+1=X
状态方程1:Y1n+1=X Y2n +Y2n Y1n
选用JK触发器来做,
Y2n+1=X
激励方程2:J2= X , K2=X
用同样的方法可得:
激励方程1:J
=Y2n K1= X+ Y2n
1
根据输出方程和驱动方程可画出逻辑图如下:。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二、设计一个1010的序列检测器,检测到1010时输出为“1”否则为“0”,用D触发器实现。

第一步:根据要求进行逻辑抽象,得出电路的原始状态转换图和状态转换表。

取输入数据变量为X,检测的输出变量为Z,
该同步时序逻辑电路的功能是检测输入序列是否为1010,一旦输入序列出现一个1就记下来,因为这个1可能是1010序列的第一个1,;接着看输入是否为0,因为10是序列1010的前两位;其次再看输入是否为1,因为101是1010序列的前三位;最后再输入一个0,输出则为1,因为出现了一个1010序列,泽电路必须记住1,10,101,1010四种输入情况,每一种输入情况应与电路的一个状态相对应。

根据题意,设电路随机的输入和输出序列为:
X:0 1 0 1 0 0 0 1 0 1 0 1 0……
Z: 0 0 0 0 1 0 0 0 0 0 1 0 0……
该电路仅有一个输入端,每个现态有两个可能转移方向,设电路初态为S0,当X=0时,电路仍处在状态S0,当输入一个1以后的状态为S1,输入10以后的状态为S2,输入101以后的状态为S3,输入1010以后的状态为S4。

以S n表示电路的现态,S n+1表示电路的次态。

由此得出原始状态转换图和原始状态转换表:
第二步:状态化简:
依据状态等效条件判断得出S0和S4在相同的输入条件下,它们转换到相同的次态去,且有相同的输出,故S0和S4等效,经分析比较,找出最大等效类:{S1},{S2},{S3},{S0,S4}。

由此得出化简的状态转换图和最简状态表:
第三步:状态编码:
最贱状态表共有四种状态,可用两位二进制代码来表示,设状态变量为Q1,Q2,依据状态编码原则,确定S0=00,S1=01,S2=11,S3=10四种状态,其编码后的状态转换图和状态转换表:
第四步:求出各触发器的状态方程,驱动方程和输出方程。

Z = X Q2n Q1n
(2)
Q2n+1 = X Q2n Q1n + X Q2n Q1n
00 01 11 10
Q2n Q1n
X
0 0 1 0 0
1 1 1 0 1
(3)
Q1n+1 = X Q2n + X Q1n + Q3n Q1n
由D触发器特性方程求出各个触发器的驱动方程:
D2 = X Q2n Q1n + X Q2n Q1n
D1 = X Q2n + X Q1n + Q2n Q1n
第五步:画出逻辑电路图:
第六次:检测该电路是否有自启动能力。

该电路没有无关状态。

当X=0时,输出Z=XQ2n Q1n,触发器的次态
Q2n+1=X Q2n Q1n+ XQ2n Q1n=0,Q1n+1=Q2n Q1n+ X Q1n=0,
若此时来一个时钟脉冲CP,则可转入有效状态00,即S0。

当X=1时,输出Z=XQ2n Q1n,触发器的次态
Q2n+1=X Q2n Q1n+ XQ2n Q1n=1,Q1n+1= Q2n Q1n+ X Q1n=0,
若此时来一个时钟脉冲CP,则可转入有效状态10,即S3。

所以该逻辑电路具有自启动能力。

相关文档
最新文档