实验五 序列检测器

实验五 序列检测器
实验五 序列检测器

五邑大学实验报告

实验课程名称

序列检测器

院系名称:__信息学院_____

专业名称:__电子信息工程___

实验项目名称:_EDA实验____

班级ap07053 学号:_ap0705307___报告人:__黃少昌____

实验五序列检测器

一、实验目的:

1、掌握用Verilog HDL实现状态机的方法;

2、利用状态机设计一个序列检测器。

二、实验原理:

序列检测器在数据通讯,雷达和遥测等领域中用与检测步识别标志。它是一种用来检测一组或多组序列信号的电路。例如检测器收到一组串行码{1110010}后,输出标志1,否则,输出0。

考查这个例子,每收到一个符合要求的串行码就需要用一个状态进行记忆。串行码长度为7位,需要7个状态;另外,还需要增加一个“未收到一个有效位”的状态,共8个状态;S0~S7,状态标记符的下标表示有几个有效位被读出。

画出状态转换图,如图5-1所示,很显然这是一个莫尔状态机。8个状态机根据编码原则可以用3位二进制数来表示。

图 5-1 序列检测器状态变化图

三、设计任务及要求:

1、用状态机实现一序列检测器,即检测到串行码{1110010}后,检测器输

出1,否则输出0;

2、设计输入采用Verilog HDL语言;

3、对设计进行仿真;

4、把设计下载到试验箱验证。

四、设计提示:

1、状态机是实验时序电路的有效工具,用状态机实现时序检测器就是典型例

子;

2、状态机的Verilog HDL 实现基本有固定模式,参见教程《数字系统设计

与Verilog HDL》(第二版)第271~272页。

3、状态机实现的要点是在每个状态下,当时钟有效沿到来时,判断输入值是

什么,然后决定下一状态跳转到什么地方。

五、给出设计的源程序:

module seq(in,out,state,clk,reset);

input in,clk,reset; output out;output[2:0]state;

reg[2:0]state;reg out;

parameter s0='d0,s1='d1,s2='d2,s3='d3,s4='d4,s5='d5,s6='d6,s7='d7; always @(posedge clk)

begin if(reset) begin state<=s0;out<=0;end

else casex(state)

s0:begin

if(in==0) begin state<=s0;out<=0;end

else begin state<=s1;out<=0;end

end

s1:begin

if(in==0) begin state<=s0;out<=0;end

else begin state<=s2;out<=0;end

end

s2:begin

if(in==0) begin state<=s0;out<=0;end

else begin state<=s3;out<=0;end

end

s3:begin

if(in==0) begin state<=s4;out<=0;end

else begin state<=s3;out<=0;end

end

s4:begin

if(in==0) begin state<=s5;out<=0;end

else begin state<=s1;out<=0;end

end

s5:begin

if(in==0) begin state<=s0;out<=0;end

else begin state<=s6;out<=0;end

end

s6:begin

if(in==0) begin state<=s7;out<=1;end

else begin state<=s2;out<=0;end

end

s7:begin

if(in==0) begin state<=s0;out<=0;end

else begin state<=s1;out<=0;end

end

default:state<=s0;

endcase

end

endmodule

六、给出序列检测器的仿真波形图:

七、心得体会:

此次实验,我觉得既锻炼了我们的设计,由简单的抽象理解到实际认知。特别的是使用M2软件的仿真使我对它们的功能有了形象的认识,而且还可以帮助我们检查出错误,为以后的工作需要奠定了一定的基础。

在这次实验中,也要感谢同学的帮助,相互讨论中也使我学习了他们不同的思考方式,使我明白了团体合作是很重要的。

通过实验,我们真正体会到EDA带来的方便;通过仿真,我们能够很形象地了解到原理图的功能。体验到真实实验中的情境,增加了对电子实验和电子设计的信心。

通过本设计,进一步加深了对Verilog HDL语言的理解及应用,理解了数码管的工作和译码的整个思路。用Verilog HDL语言来设计电路,思路更清晰,更简洁,实现起来更加的得心应手。这就是电子系统EDA最好的体现

八、思考题:

1、状态机处于S3状态时,若再输入一个“1”,为什么状态机仍停留在S3

状态,而不是其他状态?

答:因为连续四个1了,而检测要求的是三个1;所以检测还是当作连续三个1来算。

2、什么叫一点热码编码状态机?

答:一位热码编码。采用这种编码方式,相对于格雷码来说虽然增加了触发器,但是节省了组合电路。提高了电路的速度和可靠性。例如5位的热码编码(5'b00001,5'b00010,5'b00100,5'b01000,5'b10000;)。与格雷码一样都是一位进行变化,唯一不同的是,一位热码是不需要进行逻辑运算的。

序列检测器

实验三有限状态机进行时序逻辑电路设计 学院:物理与电子科学学院专业:应用电子技术班级: 1007班姓名: xxx 学号: xxxxxxxxxxxxx 一,实验目的: (1)掌握利用有限状态机实现一般时序逻辑分析标的方法; (2)掌握用Verilog编写可综合的优先状态机的准模板; (3)掌握用Verilog编写状态机模板的测试文件的一般方法; 二,实验内容: 序列检测器:将一个指定的序列从数字码流中识别出来。 设计一个能够识别序列“10010”的序列检测器,设:x为数字码流输入,z为检测标记输出,且高电平表示“发现指定序列”,低电平表示“没有发现指定序列”。 考虑码流为“110010010000100101…” 完成序列“10010”检测功能电路模块的Verilog程序编写,和测试模块程序的编写. “10010”序列检测电路的状态转移图如下: 其中状态A-E表示5位序列“10010”按顺序正确出现在码流中。考虑到序列重叠的可能,

转换图中还有状态F,G。另外,电路的初始状态设为IDLE. 三,实验程序 (1)功能模块: module fim (x,z,clock,reset,,state); input clock,reset,x; 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==D&&x==0)?1:0; always @(posedge clock) if(!reset) begin state<=Idle; end else case(state) Idle:if(x==1) begin state<=A; end else begin state<=Idle; end A:if(x==0) begin state<=B; end else begin state<=A; 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==0) begin state<=G; end else begin state<=F; end default: state<=Idle; endcase endmodule

序列信号检测器

南昌大学实验报告 学生姓名:学号:专业班级: 实验类型:□验证□综合 设计□创新实验日期:实验成绩:实验三序列信号发生检测器 一、实验目的 1、学会运用VHDL语言设计方法构建具有一定逻辑功能的模块,并能运用图形设计方法完成顶层原理图的设计。 2、掌握脉冲序列检测器的主要功能 二、实验要求 1、设计一个序列信号发生器,用以产生输入序列“1101010011010101”由左开始。 2、设计一个序列检测器,用以检测输入序列,检测序列为10011 3、运用QuartusⅡ软件中的仿真功能对所设计的序列检测器的各个模块及顶层电路的功 能进行仿真分析。 三、设计过程 1,序列信号检测器设计原理: 序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的相同,则输出 1,否则输出 0。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码与预置数的对应码相同。设计中一般采用状态机来实现。 2,模块设计: 根据层次化设计理论以及序列信号检测器的基本原理,本次设计的序列检测器采用自顶向下的思路可分为时钟输入模块、序列发生模块、序列检测模块、数码管动态扫描显示模块及LED状态转换显示模块,系统框图如下

序列信号检测器系统框图 3、使用文本设计底层文件,并生成相应元器件,再使用原理图设计顶层文件 四、实验步骤 1、顶层文件的设计 顶层原理图设计可以依据系统框图进行,时钟输入模块(clkdiv)、序列发生模块(fsq)、序列检测模块(jcq)、数码管动态扫描显示模块及LED状态转换显示模块(scan_led)、序列信号译码模块(czb) 2,各模块设计文件 ①时钟clkdiv: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DIV IS PORT(CLK : IN STD_LOGIC; CLK_DIV : OUT STD_LOGIC); END DIV; ARCHITECTURE RT1 OF DIV IS SIGNAL DA TA:INTEGER RANGE 0 TO 500;

FPGA实验报告

数字电路与逻辑设计 用Verilog编程 用FPGA实现汽车尾灯控制系统 实验报告 学院:信息与通信工程学院 专业:电子信息工程 班级: 2015211103 组员:傅远昌 2015210077 张楷 2015210078

一.实验要求 根据汽车行驶状态自动控制汽车尾灯 1.直行:尾灯不亮 2.右转:右侧尾灯亮而且按秒闪烁,左侧尾灯不亮 3.左转:左侧尾灯亮而且按秒闪烁,右侧尾灯不亮 4.临时停车或故障:两侧尾灯同时闪烁 5.倒车显示 二.用FPGA实现方式设计 1.用三色LED代表左右汽车尾灯,为了便于区分,左尾灯选择靠左的三色LED且显示为蓝色,右尾灯选择靠右的三色LED且显示为红色。两灯同时闪烁表示停车或倒车。 2.用八个单色LED以流水灯的方式显示汽车的行驶状态,向前滚动表示汽车前行,向后滚动表示汽车到车,只有前四个LED 亮表示左转,只有后四个LED亮表示右转。 3.用四个拨码开关分别表示前行、左转、右转、故障(倒车),器输入组合1000表示前行,0100表示左转、0010表示右转、0001表示故障(倒车); 三.设计思路分析 1.使用不同的进程来分别处理时钟分频及各个状态下的灯光效果 2.用三色LED代表左右汽车尾灯

3.用拨码开关控制汽车行驶状态 4.用单色LED显示汽车行驶状态 5.使用状态机的思想来设计,通过过状态来决定灯光效果,通过外部输入来改变状态。 四.波形仿真 五.管脚分配 1.输入管脚分配: 2.输出管脚分配:

六.实验总结体会: (1)本次实验,我们采用模块化的设计方法,将整体分成不同功能的模块,如计时模块、分频模块、显示控制模块、LED灯显示模块,然后分模块编写程序(由小组人员分工完成),之后再将模块之间用变量连接起来,从而实现汽车尾灯显示要求。 (2)在实现本次设计的过程中,使我们了解了汽车尾灯的基本原理,从而让我们觉得,首次将我们的专业知识与生活联系起来,增强了我们对本课程的学习兴趣。 (3)在本次实验的实现过程中,通过调用case语句、always语句,是我们进一步加深了对case、always语句的认识,并且能够将其运用到其他设计中,使我们进一步熟练了这种设计方法和verilog程序设计语言。 七.实现代码

数字逻辑电路实验报告

数字逻辑电路 实验报告 指导老师: 班级: 学号: 姓名: 时间: 第一次试验一、实验名称:组合逻辑电路设计

二、试验目的: 1、掌握组合逻辑电路的功能测试。 2、验证半加器和全加器的逻辑功能。 3、、学会二进制数的运算规律。 三、试验所用的器件和组件: 二输入四“与非”门组件3片,型号74LS00 四输入二“与非”门组件1片,型号74LS20 二输入四“异或”门组件1片,型号74LS86 四、实验设计方案及逻辑图: 1、设计一位全加/全减法器,如图所示: 电路做加法还是做减法是由M决定的,当M=0时做加法运算,当M=1时做减法运算。当作为全加法器时输入信号A、B和Cin分别为加数、被加数和低位来的进位,S 为和数,Co为向上的进位;当作为全减法时输入信号A、B和Cin分别为被减数,减数和低位来的借位,S为差,Co为向上位的借位。 (1)输入/输出观察表如下: (2)求逻辑函数的最简表达式 函数S的卡诺图如下:函数Co的卡诺如下: 化简后函数S的最简表达式为: Co的最简表达式为:

(3)逻辑电路图如下所示: 2、舍入与检测电路的设计: 用所给定的集成电路组件设计一个多输出逻辑电路,该电路的输入为8421码,F1为“四舍五入”输出信号,F2为奇偶检测输出信号。当电路检测到输入的代码大于或等于5是,电路的输出F1=1;其他情况F1=0。当输入代码中含1的个数为奇数时,电路的输出F2=1,其他情况F2=0。该电路的框图如图所示: (1)输入/输出观察表如下: B8 B4 B2 B1 F2 F1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 1 1 1

八位序列检测器设计

八位序列检测器设计 班级:1302012 学号: 姓名:郭春晖

一、设计说明 使用quartus软件进行仿真和验证,并且还可以检测其他的序列,只需要修改一部分代码就可以实现。 二、方案 工作原理:基于FPGA的多路脉冲序列检测器的设计方案,使用VHDL语言设计时序逻辑电路,先设计序列发生器产生序列:01010;再设计序列检测器,检测序列发生器产生序列,若检测到信号与预置待测信号相同,则输出“1”,否则输出“0”,并且将检测到的信号的显示出来。 三、单元模块设计 1、序列信号发生器 序列信号是指在同步脉冲作用下循环地产生一串周期性的二进制信号。利用状态机设计,首先定义一个数据类型FSM_ST它的取值为st0到st15的16个状态。 序列信号发生器的代码如下:

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SHK IS PORT (CLK,RST :IN STD_LOGIC; CO :OUT STD_LOGIC ); END SHK; ARCHITECTURE behav OF SHK IS TYPE FSM_ST IS (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15); SIGNAL REG:FSM_ST; SIGNAL Q:STD_LOGIC; BEGIN PROCESS(CLK,RST) BEGIN IF RST ='1' THEN REG<=s0;Q<='0'; ELSIF CLK'EVENT AND CLK='1' THEN CASE REG IS WHEN s0=> Q<='1'; REG<=s1; WHEN s1=> Q<='0';REG<=s2; WHEN s2=> Q<='1';REG<=s3; WHEN s3=> Q<='1';REG<=s4; WHEN s4=> Q<='0';REG<=s5; WHEN s5=> Q<='1';REG<=s6; WHEN s6=> Q<='0';REG<=s7; WHEN s7=> Q<='0';REG<=s8; WHEN s8=> Q<='0';REG<=s9; WHEN s9=> Q<='1';REG<=s10; WHEN s10=> Q<='1';REG<=s11; WHEN s11=> Q<='0';REG<=s12; WHEN s12=> Q<='1';REG<=s13; WHEN s13=> Q<='0';REG<=s14;

使用D触发器设计一个11001序列检测器介绍

讨论使用D触发器设计一个11001序列检测器,讨论序列可交迭(Overlap)检测和不可交迭检测在设计上的区别,讨论分别采用Mealy机设计和采用Moore机设计的区别,讨论未用状态的处理问题。 【要求】给出电路原理图或HDL代码,要求进行仿真,并给出仿真结果。 1.原件介绍 D触发器(74LS74)、“与”门(74LS08)、“或”门(74LS32)、“非”门(74LS04),集成电路引脚

2.设计思路 根据要求,设计的序列检测器有一个外部输入x和一个外部输出Z。输入和输出的逻辑关系为:当外部输入x第一个为"1",外部输出Z为"0";当外部输入x 第二个为"1",外部输出Z为"0";当外部输入第三个x为"0",外部输出Z为"0",当外部输入第四个x为“0”,外部输出Z为0,当外部输入第五个x为“1”,外部输出Z为“1”。假定有一个外部输入x序列以及外部输出Z为: 输入X 0 1 1 1 0 0 1 0 1 输出Y 0 0 0 0 0 0 1 0 0 要判别序列检测器是否连续接收了"11001",电路必须用不同的状态记载外部输入x的值。假设电路的初始状态为A,x 输入第一个"1",检测器状态由A装换到B,用状态B记载检测器接受了"11001"序列的第一个"1",这时外部输出Z=0;x输入第二个"1",检测器状态由B装换到C,用状态C 记载检测器接了“11001”序列的第二个"1",外部输出Z=0;x输入第三个"0",检测器状态由C装换到D,外部输出Z=0;x输入第四个为“0”,检测器状态由D装换到E,外部输出Z=0;x输入第五个为“1”,检测器状态由E装换到F,外部输出Z=1。然后再根据外部输入及其他情况时的状态转移,写出相应的输出。以上分析了序列检测器工作,由此可画出原始状态图。根据原始状态图可列出原始状态表。 状态转换表 A B D C E F 1\0 1\0 0\0 0\0 1\1 0\0 0\0 1\0 1\0 0\0 0\0

实验三序列发生器与序列检测器实验报告

南昌大学实验报告姓名: 学号:6100210173 专业班级:中兴通信101 实验类型:验证□综合■设计□创新□实验日期:2012、11、16 实验四序列信号发生器与检测器设计 一、实验目的 1、.学习VHDL文本输入法 2、学习有限状态机的设计 3、设计序列信号发生器和检测器 二.实验内容与要求 1. 设计序列发生器,完成序列为0111010011011010的序列生成器 2.用有限状态机设计序列检测器,实现串行序列11010的检测器 3. 若检测到符合要求的序列,则输出显示位为“1”,否则为“0” 4. 对检测到的次数计数 三.设计思路 1.设计分频器 因为最终要把待检测序列的检测次数在数码管上显示出,所以必须设计一个分频器,将起始频率作为数码管的扫描频率,而将分频后的频率作为序列发生器的移位频率,所以在程序中设置10KHZ进行分频分成1HZ脉冲(10KHZ的扫描频率是为了让数码管的动态显示更加清晰) 2.设计序列发生器 在这次的设计序列发生器时没有用状态转移的方法来来形成一个16位的序列,而是通过直接设计一串16位的序列,通过对最高位的输出与并置来形成一串循环的16位序列,这样设计简单方便,易于操作与控制,也减少了在状态转移产生的误差,其主要的核心程序为: architecture bhv of p2 is signal bs: std_logic_vector(15 downto 0):="0111010011011010"; begin xlout<=bs(15); process (clk1hz) begin if (clk1hz'event and clk1hz='1') then bs<= bs(14 downto 0)&bs(15); 先将序列最高位输出至序列检测器中,然后在一个脉冲作用下,将此时最高位变成最低位,其余14位不变,使序列循环移动,最终形成一个16位循环序列。 3.设计序列检测器 基本思想是采用有限状态机设计,通过状态的转移来实现被检测序列的的检测,首先设定6个状态S0 S1 S2 S3 S4 S5 通过这6个状态的转移情况来检测出11010这个序列。

1011序列检测器

综合设计性实验报告 题目: 学生姓名: 学号: 班级: 指导教师: 学期:2010——2011第2学期

目录 一基本知识点 (1) 二实验器件 (1) 三设计思路 (1) 四设计过程 (2) (一)三位二进制减法计数器(无效状态000,001) (二)5 五引脚功能 (9) 六逻辑电路图: (11) 七实验结果波形图 (12) 八设计心得体会 (12)

一基本知识点 1、掌握时序电路的设计方法和步骤 2、掌握触发器的设计与应用 3、掌握移位寄存器的原理与应用 4 熟悉集成电路的引脚排列; 5 掌握芯片的逻辑功能及使用方法; 6 了解序列产生及检测器的组成及工作原理 7 会在EWB软件上进行仿真; 二实验器件 1、移位寄存器74LS194 1片 2、负边沿JK触发器74LS112 1片 3四输入与非门74LS20 1片 4、六输入非门74LS05 1片 5 电源一个 6 地线一个 7 与门,或门,非门若干个 8 时钟脉冲一个 三设计思路 1作原始状态表。根据给定的电路设计条件构成原始状态表和状

态转化图 2状态表的简化。原始状态表通常不是最小化状态表,它往往包括多余的状态,因此必须首先对它进行简化。 3状态分配。即对简化后的状态给以编码。这就要根据状态数确定触发器的数量并对每个状态指定一个二进制数构成的编码。 4根据给定的电路设计条件选择触发器根据 5 作激励函数和输出函数。根据选用的触发器激励表和电路的状态表,综合出电路中各触发器的激励函数和电路的输出函数。 ⑸6画逻辑图,并检查自启动功能 四设计过程 (一)101101001信号发生器的设计 设计一个信号序列发生器,在产生的信号序列中,含有“1011”信号码,要求用一片移位寄存器,生成信号序列“10110100”,其中含有1011码,其设计按以下步骤进行:、、 1本实验所用仪器为移位寄存器74LS194,确定移存器的位数n。因M=9,故n≥4,用74LS194 的四位。 2确定移存器的九个独立状态。将序列码101101001按照每四位一组,划分为九个状态,其迁移关系如下所示: 3作出状态转换表及状态转换图如下:

FPGA数电实验报告

实验报告 课程名称:数字电子技术实验姓名: 学号: 专业: 开课学期: 指导教师:

实验课安全知识须知 1.须知1:规范着装。为保证实验操作过程安全、避免实验过程中意外发生,学生禁止穿拖 鞋进入实验室,女生尽量避免穿裙子参加实验。 2.须知2:实验前必须熟悉实验设备参数、掌握设备的技术性能以及操作规程。 3.须知3:实验时人体不可接触带电线路,接线或拆线都必须在切断电源的情况下进行。 4.须知4:学生独立完成接线或改接线路后必须经指导教师检查和允许,并使组内其他同学 引起注意后方可接通电源。实验中如设备发生故障,应立即切断电源,经查清问题和妥善处理故障后,才能继续进行实验。 5.须知5:接通电源前应先检查功率表及电流表的电流量程是否符合要求,有否短路回路存 在,以免损坏仪表或电源。 特别提醒:实验过程中违反以上任一须知,需再次进行预习后方可再来参加实验;课程中违反三次及以上,直接重修。 实验报告撰写要求 1.要求1:预习报告部分列出该次实验使用组件名称或者设备额定参数;绘制实验线路图, 并注明仪表量程、电阻器阻值、电源端编号等。绘制数据记录表格,并注明相关的实验环境参数与要求。 2.要求2:分析报告部分一方面参考思考题要求,对实验数据进行分析和整理,说明实验结 果与理论是否符合;另一方面根据实测数据和在实验中观察和发现的问题,经过自己研究或分析讨论后写出的心得体会。 3.要求3:在数据处理中,曲线的绘制必须用坐标纸画出曲线,曲线要用曲线尺或曲线板连 成光滑曲线,不在曲线上的点仍按实际数据标出其具体坐标。 4.要求4:本课程实验结束后,将各次的实验报告按要求装订,并在首页写上序号(实验课 上签到表对应的序号)。请班长按照序号排序,并在课程结束后按要求上交实验报告。 温馨提示:实验报告撰写过程中如遇预留空白不足,请在该页背面空白接续。

序列检测器实验报告

序列检测器设计 实验内容: 设计一个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 is port ( 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 is signal a:std_logic_vector(7 downto 1); signal combination: std_logic_vector(7 downto 1); begin process(clk) begin if clk'event and clk='1' then a<=a(6 downto 1)&x; if y='1' then combination<="1110010";

序列检测器

目录 第一章设计方案.........................................................1 1.1设计任务..........................................................1 1.2设计要求..........................................................1 1.2.1整体功能要求.................................................1 1.2.2测试要求.....................................................1 第二章设计思路.........................................................2 2.1数字频率计介绍....................................................2 2.2设计原理..........................................................2 2.2.1频率测量的基本原理...........................................2 2.2.2整体方框图及原理.............................................2 2.2.3序列器结构框图...............................................2 第三章模块介绍.........................................................4 3.1顶层文件模块......................................................4 3.1.1顶层文件原理.................................................4 3.1.2顶层文件模块verilog语言描述程序.............................4 3.2伪随机序列发生器模块..............................................4 3.2.1伪随机序列发生器.............................................4 3.2.2伪随机序列发生器原理.........................................5 3.2.3伪随机序列发生器模块verilog语言描述程序.....................6

序列检测器的设计 实验报告.doc

EDA实验报告书

WHEN OTHERS => NST <= st0; END CASE ; END PROCESS; REG: PROCESS (CLK,RST) BEGIN IF RST='1' THEN ST<=s0; ELS IF ( CLK'EVENT AND CLK='1') THEN ST<=NST; END IF; END PROCESS REG; SOUT<='1'WHEN ST=s8 ELSE '0' ; END behav; 仿真波形 图

实验结果LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY SM1 IS PORT ( clock : IN STD_LOGIC; reset : IN STD_LOGIC := '0'; input1 : IN STD_LOGIC := '0'; input2 : IN STD_LOGIC := '0'; output1 : OUT STD_LOGIC ); END SM1; ARCHITECTURE BEHA VIOR OF SM1 IS TYPE type_fstate IS (st1,st2,st3,st4,st5,st6,st7,st8,st0); SIGNAL fstate : type_fstate; SIGNAL reg_fstate : type_fstate; BEGIN PROCESS (clock,reset,reg_fstate) BEGIN IF (reset='1') THEN fstate <= st1; ELSIF (clock='1' AND clock'event) THEN fstate <= reg_fstate; END IF; END PROCESS; PROCESS (fstate,input1,input2) BEGIN output1 <= '0'; CASE fstate IS WHEN st1 => IF (((input1 = '1') AND (input2 = '1'))) THEN reg_fstate <= st2; ELSE reg_fstate <= st0; END IF;

数字逻辑实验 8_序列检测器

实验八序列检测器的设计与仿真 一、实验要求 1.用VHDL语言设计一个Mealy机以检测“1101001”序列; 2.用VHDL语言设计一个Moore机以检测“1101001”序列; 3.在文本编辑区使用VHDL硬件描述语言设计逻辑电路,再利用波形编辑区进行逻辑功 能仿真,以此验证电路的逻辑功能是否正确。 二、实验内容 用VHDL语言设计各一个mealy和moore状态机测试“1101001”位串的序列检测器,并通过仿真波形验证设计的功能是否正确。 三、实验过程 由于在报告1中已经详尽描述了如何使用Quartus 2建立逻辑原理图和使用VHDL语言实现元件功能,所以本次的实验报告中便不再赘述上述内容,报告将主要就VHDL 语言描述实现元件的功能的过程进行阐述。 1.Mealy机 选择File→New,弹出新建文本对话框,在该对话框中选择VHDL File并单击OK按钮,进入文本编辑窗口,输入VHDL代码。 library ieee; use ieee.std_logic_1164.all; entity melay is port(clk,rst,d: in std_logic; z: out std_logic); end melay; architecture arc of melay is type state_type is(s0,s1,s2,s3,s4,s5,s6); signal state: state_type; begin process(clk,rst) begin if rst= '1' then state<=s0; elsif (clk'event and clk ='1') then case state is --1101001 when s0 => if d='1' then state<=s1; else

实验六 序列信号发生器与序列信号检测器的设计1

实验六、序列信号发生器与序列信号检测器的设计 一、实验目的 1、掌握序列发生器和检测器的工作原理; 2、初步学会用状态机进行数字系统设计。 二、实验要求 1、基本要求 1)设计一个“10001110”序列发生器; 2)设计一个“10001110”序列的检测器。 2、扩展要求 1)设计一个序列发生器,将8 位待发生序列数据由外部控制输入进行预置,从而可随时改变输出序列数据。 2)将8 位待检测预置数由按键作为外部输入,从而可随时改变检测密码。写出该检测器的VHDL 代码,并进行编译下载测试。 3)如果待检测预置数以右移方式进入序列检测器,写出该检测器的VHDL 代码(两进程符号化有限状态机)。 三、实验原理 1、序列发生器原理 在数字信号的传输和数字系统的测试中,有时需要用到一组特定的串行数字信号,产生序列信号的电路称为序列信号发生器。 本实验要求产生一串序列“10001110”。该电路可由计数器与数据选择器构成,其结构图如图6-1所示,其中的锁存输出的功能是为了消除序列产生时可能出现的毛刺现象: 图6-1 序列发生器结构图 2、序列检测器的基本工作过程: 序列检测器用于检测一组或多组由二进制码组成的脉冲序列信号,在数字通信中有着广泛的应用。当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置的对应码相同。在检测过程中,任何一位不相等都将回到初始状态重新开始检测。状态图如图6-2所示:

基于FPGA的单脉冲发生器

西安邮电大学FPGA课程设计报告 题目:可编程单脉冲发生器 院系:通信与信息工程学院专业班级:电子信息科学与技术学生姓名:韩萌 导师姓名:张丽果 起止时间:2012-9-10至2012-9-22 2012年09月20日

FPGA课程设计报告提纲 1.任务 根据输入的8位的脉宽参数,输出255种宽度的单次脉冲。 可编程单脉冲发生器是一种脉冲宽度可编程的信号发生器,在输入按键的控制下,产生单次的脉冲,脉冲的宽度由8位的输入数据控制。由于是8位的脉宽参数,故可以产生255 种宽度的单次脉冲。 2.目的 产生一个脉冲宽度可根据8位输入数据(data)可变的脉冲发生器。 可变的脉冲信号可以通过把输入的data赋值给一个count,通过对count信号做减1操作控制输出的脉冲宽度。把data赋给count后,在key键启动的情况下,输出脉冲pulse信号开 始输出低电平,count同时在每来一个时钟信号的时候做减1操作,而且pulse信号一直保持高 电平,当count减为0时,把pulse信号拉低。这样就输出了一个脉冲宽度可以根据data输入信 号可变的脉冲信号。 3.使用环境(软件/硬件环境,设备等) 布局布线使用的环境是Quartus II。 仿真测试使用的环境是ModelSim SE。 4.FPGA课程设计详细内容 4.1 技术规范 (一)、功能定义如下: 本设计实现一个可编程单脉冲发生器,具体功能如下: 1.异步信号复位,复位后信号输出可以重新开始。 2.把8为脉冲宽度data赋给计数信号count。 3.当有key按键使能时,输出脉冲信号,并做count减1操作,重复再按使能键无效。 4.使能按键后产生的单脉冲的上升沿与时钟取得同步。 5.当count减为0时,脉冲信号拉低。高电平持续的宽度,即所需的脉冲宽度。 6.产生的脉冲信号的最大宽度为255。 (二)、引脚定义

110序列检测器仿真报告

Lab 110序列检测器仿真 1.实验目的 学会序列检测的设计,学会modelsim的使用,熟悉用Quartus编译Verilog语言的方法,熟悉DEO板的操作。 2.实验内容 1)用HDL语言的输入方式,实现110序列检测器。 2)用modelsim进行仿真。 3)用DE0下载并进行测试。 3.代码分析 1)该实验使用状态机进行设计,使用两个always语句,一个作为时序逻辑,另一个作为组合逻辑,其结构图为 2)首先定义输入输出变量和中间变量: module test110(data_in,data_out,Q,cp,en); output data_out,Q; //定义输出变量; input data_in,cp,en; //定义输出变量; reg data_out; //定义中间变量;

reg[1:0]pres_state,next_state; //定义两个时态; wire Q; //定义wire型中间变量; parameter s0=2'd0,s1=2'd1,s2=2'd2; //指定状态编码; 3)第一个always语句实现时序逻辑功能: fenpinqi(Q,cp); //调用分频器,改变时钟信号; always@(posedge Q or negedge en) //采用边沿触发; if(~en)pres_state<=s0; //清零; else pres_state<=next_state; //在Q上升沿触发器状态翻转; 4)第二个always语句实现组合逻辑功能: always@(pres_state or data_in) //电平触发事件 Begin next_state<=2' xx; //定义输出为零 data_out=1'b0; case(pres_state) //判断条件为现态的状态,对各状态值惊醒判断,并输出值s0:next_state<=(data_in==1)?s1:s0; s1:next_state<=(data_in==1)?s2:s0; s2:begin next_state<=(data_in==1'b1)?s2:s0; if(data_in==1'b0)data_out=1'b1; end endcase end endmodule 5)所调用的分频器的模块: module fenpinqi(Q,CP); output Q; //定义输出端口 input CP; //定义输入端口 wire [32:0]A; //定义中间变量 counter(A,CP); //调用计数器进行计数 D_FF(Q,~Q,CP,A); //调用D触发器是信号发生翻转endmodule module counter(Q,CP); //计数器,每第25M个信号发生一次变化output Q[32:0]; //定义输出端口 input CP; //定义信号输入端口 reg[32:0]Q; //定义中间变量 always@(posedge CP) //采用边沿触发 if(Q==33'd2*******)Q<=33'd0;//每25M作为一个计数周期 else Q<=Q+1'd1; //Q自增并输出 endmodule module D_FF(Q,D,CP,CR); //D触发器 output Q; //定义输出端 input D,CP; //定义输入端及D信号输入 input [32:0]CR; //定义输入变量 reg Q; //定义中间变量

11100101序列检测器

状态图: 状态表: VHDL: Library IEEE.; Use.ieee.std_logic_1164.all;

LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SCHK IS PORT( DIN,CLK,CLR : IN STD_LOGIC ; --串行输入数据位/工作时钟/复位信号 AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); --检测结果输出 END SCHK; ARCHITECTURE behav OF SCHK IS SIGNAL Q : INTEGER RANGE 0 TO 8 ; SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0); --8位待检测预置数 BEGIN

D <= "11100101 " ; --8位待检测预置数 PROCESS( CLK, CLR ) BEGIN IF CLR = '1' THEN Q <= 0 ; ELSIF CLK'EVENT AND CLK='1' THEN --时钟到来时,判断并处理当前输入的位CASE Q IS WHEN 0=> IF DIN = D(7) THEN Q <= 1 ; ELSE Q <= 0 ; END IF ; WHEN 1=> IF DIN = D(6) THEN Q <= 2 ; ELSE Q <= 0 ; END IF ; WHEN 2=> IF DIN = D(5) THEN Q <= 3 ; ELSE Q <= 0 ; END IF ; WHEN 3=> IF DIN = D(4) THEN Q <= 4 ; ELSE Q <= 0 ; END IF ; WHEN 4=> IF DIN = D(3) THEN Q <= 5 ; ELSE Q <= 0 ; END IF ; WHEN 5=> IF DIN = D(2) THEN Q <= 6 ; ELSE Q <= 0 ; END IF ; WHEN 6=> IF DIN = D(1) THEN Q <= 7 ; ELSE Q <= 0 ; END IF ; WHEN 7=> IF DIN = D(0) THEN Q <= 8 ; ELSE Q <= 0 ; END IF ; WHEN OTHERS => Q <= 0 ; END CASE ; END IF ; END PROCESS ; PROCESS( Q ) --检测结果判断输出 BEGIN IF Q = 8 THEN AB <= "1010" ; --序列数检测正确,输出“A” ELSE AB <= "1011" ; --序列数检测错误,输出“B” END IF ;

FPGA基础试验之流水灯

综合实验报告 第四组 组长:韩欢02081535 陈洁钰02081536 侯旭涛02081514 高耀02081510 李欣昊02081508 李昊02081506

FPGA基础试验之流水灯 一、实验目的 通过此实验进一步了解、熟悉和掌握Quartus II开发软件的使用方法及Verilog 语言的编程方法。学习简单时序电路的设计分析和硬件测试。 二、实验内容 1.熟悉信号产生板中的FPGA的普通I/O的连接; 2.根据实际的流水灯分析时序,体会用Verilog语言的编程产生相应时序;3.熟悉集成开发工具Quartus II,学会使用Quartus II对Cyclone系列FPGA的程序开发、编译与调试; 4.掌握Cyclone系列FPGA的程序加载,熟练掌握将.sof文件加载到实验板的FPGA中,实现流水灯的效果。 三、实验原理 流水灯,顾名思义就是让LED像水一样的点亮。如果把流水做慢动作播放,可以想象到其实就是移动,即:把水块不断地向同一方向移动,而原来的水块保持不动,就形成了流水。同样,如果使得最左边的灯先亮,然后通过移位,在其右侧的灯,从左向右依次点亮,而已经亮的灯又不灭,便形成了向右的流水灯。初始状态时,四个灯都不亮,每来一个时钟脉冲,CLK,计数器就加1.这样通过移位依次点亮所有的灯,就形成了流水灯。而当四个灯都点亮时,需要一个操作使得所有的灯恢复为初始状态。然后,再一次流水即可。如果是右移位,就出现向右流水的现象;反之,向左流水。 四、实验要求 控制4个LED进行花式显示,根据硬件设施设计两种模式:S0:从全亮到全灭,再到全亮,依次循环;S1:从LED0开始依次点亮,为LED1亮,LED2亮,LED3亮,后再LED2亮,LED1亮,LED0亮,不停循环。即输出为:S0时,从0000到1111不停循环转换;S1时,0111,1011,1101,1110,1101,1011,0111不断循环。 五、实验步骤 (1)建立工程 (2)建立Verilog文件,编写相关程序 (3)将verilog文件编译为可视化电路图文件 (4)将可视化电路图文件添加输入输出组合成电路图文件 (5)编译语法及验证原理图 (6)根据需要分配管脚并进行编译

序列检测器的设计实验报告

班级:生物医学工程141班姓名:刘玉奔学号:6103413018 设计性实验项目名称序列信号发生和检测器设计 (一)实验目的 1、进一步熟悉EDA实验装置和QuartusⅡ软件的使用方法; 2、学习有限状态机法进行数字系统设计; 3、学习使用原理图输入法进行设计。 (二)设计要求 完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现一个串行序列信号发生器和一个序列信号检测器的功能,具体要求如下: 1、先用设计0111010011011010序列信号发生器,其最后6BIT数据用LED显示出来; 2、再设计一个序列信号检测器,检测上述序列信号,若检测到串行序列“11010”则 输出为“1”,否则输出为“0”; 3、检查检测01011,即将发生的序列最后五位改为01011,为0111010011001011 (三)主要仪器设备 1、微机1台 2、QuartusII集成开发软件1套 3、EDA实验装置1套 (四)实验步骤 主要有三个模块 1:一个设计序列信号发生器 2:一个设计序列信号检测器 3:综合两个设计,通过对模块的调用达到最终效果 (五)实验数据 --设计时间:2016.10.29 --设计者:刘玉奔 --设计内容:1、先用设计0111010011001011序列信号发生器,其最后6BIT数据用LED 显示出来; --2、再设计一个序列信号检测器,检测上述序列信号,若检测到串行序列“01011”则输出

为“1”,否则输出为“0”; --序列信号发生器部分 LIBRARY IEEE;--声明IEEE库 USE IEEE.STD_LOGIC_1164.ALL;--允许使用IEEE中程序包STD_LOGIC_1164 ENTITY serialsignalgenerator IS PORT(CLK,RST:IN STD_LOGIC; CO:OUT STD_LOGIC; LED0,LED1,LED2,LED3,LED4,LED5:OUT STD_LOGIC); END behav; 得到symbol file: 序列信号检测器: LIBRARY IEEE;--声明IEEE库 USE IEEE.STD_LOGIC_1164.ALL;--允许使用IEEE中程序包STD_LOGIC_1164 ENTITY serialsignaltest IS PORT(CLK,DIN,CLR:IN STD_LOGIC; SS:OUT STD_LOGIC; LED0,LED1,LED2,LED3,LED4:OUT STD_LOGIC);

相关文档
最新文档