当前位置:文档之家› 数字电路课程设计1011序列发生器和检测器实现

数字电路课程设计1011序列发生器和检测器实现

数字电路课程设计1011序列发生器和检测器实现
数字电路课程设计1011序列发生器和检测器实现

数字电路课程设计

姓名

学号选题1011序列发生

器和检测器的设计实现

题目:

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

要求:

1)设计一个1011序列发生器;

2)设计一个1011序列检测器,改变序列检测器的输入可以通过人工拨动开关来选择。

思路:

(1)设计1011的序列发生器,由课件lec27 FSM design & serial bits generator上知识可知实现这一序列可选用计数器和数据选择器构成序列信号发生器,计数器选

用74x163,它是一个带有低电平负载和清零输入端的同步4位二进制计数器,

逻辑符号如图;数据选择器选用74x151在八个一位输入中选择,其逻辑图如图

所示:

选用这两个器件再加上一些组合逻辑器件就可连成如图所示的电路图构成序列信号发生器:

(2)设计一个1011序列检测器,同理由lec27 FSM design & serial bits generator 选用JK 触发器设计在选用一些组合逻辑器件即可完成如图所示的电路图

(3)整体

具体步骤:

(1)

确定状态数:S0状态,初始状态,当前还没有1输入;S1状态:最后一个输入为

1(1…);S2状态:最后二个输入为10(10…)

;S3状态:最后三个输入为101(101…);S 4状态:最后四个

输入为1011。

(3)

由原始状态转换图可得其状态转换表为:

由上图可知 : 状态S (4) 状态编码:

由上表可得Q1*,Q2和Z的卡洛图为

Q1*

故可得:Q1*=X

Q2* X 故可得Q2*=Q1X’+XQ2Q1’

输出 Z

故可得:Z=XQ2Q1

(5)求驱动方程:

J1=XK1=X’

J2=Q1X’K2=XQ1’+Q1X’

Z=XQ2Q1

可得出思路中电路图:

(6)检查电路的自启动:由上表可知状态00,01,10,11全部为有效状态,即其没有无效状态,故电路肯定能自启

动。

(7)仿真

此电路的Verilog程序为:

module liyafeng(clk,res,Z);

input clk,res;

output Z;

reg[1:0] x;

wire Z;

reg num;

always @(posedge clk) begin

if(res==1) begin

x<=2'b00; end

else x<=x+1;

end

always @(posedge clk) begin

case(x)

2'b00:num<=1;

2'b01:num<=0;

2'b10:num<=1;

2'b11:num<=1;

endcase

end

assign Z=num;

endmodule

它的时序图为:

(8)心得体会:通过本次实验对数电知识有了更深入的了解,将其运用到了实际中来,明白了学习数字设计的意义,也达到了其培养的目的。在设计中,我也遇到了很多挫折,不过都一一克服了,这使我明白了感觉学会了并不等于真的会。在以后的学习中我也会谨记这次课程设计中所得经验,明白学生应该怎样去学习。

成功就是在不断摸索中前进实现的,遇到问题不能灰心、烦躁,甚至放弃,而要静下心来仔细思考,分部检查,找出最终的原因进行改正,这样才会有进步,才会一步步向自己的目标靠近,才会取得自己所要追求的成功。

使用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

数字电路课程设计题目选编

数字电路课程设计题目选编 1、基于DC4011水箱水位自动控制器的设计与实现 简介及要求:水箱水位自动控制器,电路采用CD4011 四与非门作为处理芯片。要求能够实现如下功能:水 箱中的水位低于预定的水位时,自动启动水泵抽水; 而当水箱中的水位达到预定的高水位时,使水泵停止 抽水,始终保持水箱中有一定的水,既不会干,也不 会溢,非常的实用而且方便。 2、基于CD4011声控、光控延时开关的设计与实现 简介及要求:要求电路以CD4011作为中心元件,结合外围 电路,实现以下功能:在白天或光线较亮时,节电开关呈关闭 状态,灯不亮;夜间或光线较暗时,节电开关呈预备工作状态, 当有人经过该开关附近时,脚步声、说话声、拍手声等都能开 启节电开关。灯亮后经过40秒左右的延时节电开关自动关闭, 灯灭。 3、基于CD4011红外感应开关的设计与实现 在一些公共场所里,诸如自动干手机、自动取票机等,只要人手在机器前面一晃,机器便被启动,延时一段时间后自动关闭,使用起来非常方便。要求用CD4011设计有此功能的红外线感应开关。 4、基于CD4011红外线对射报警器的设计与实现 设计一款利用红 外线进行布防的防盗 报警系统,利用多谐振 荡器作为红外线发射 器的驱动电路,驱动红 外发射管,向布防区内 发射红外线,接收端利用专用的红外线接收器件对发射的 红外线信号进行接收,经放大电路进行信号放大及整形, 以CD4011作为逻辑处理器,控制报警电路及复位电路,电

路中设有报警信号锁定功能,即使现场的入侵人员走开,报警电路也将一直报警,直到人为解除后方能取消报警。 5、基于CD4069无线音乐门铃的设计与实现 音乐门铃已为人们所熟知,在一些住宅楼中都 装有音乐门铃,当有客人来访时,只要按下门铃按 钮,就会发出“叮咚”的声音或是播放一首乐曲, 然而在一些已装修好的室内,若是装上有线门铃, 由于必须布线,从而破坏装修,让人感到非常麻烦。 采用CD4069设计一款无线音乐门铃,发射按键与接 收机间采用了无线方式传输信息。 6、基于时基电路555“叮咚”门铃的设计与实现 用NE555集成电路设计、制作一个“叮咚”门铃,使该装置能够 发出音色比较动听的“叮咚”声。 7、基于CD4511数显八路抢答器的设计与实现 CD4511是一块含BCD-7段锁存、译码、驱动电路于一体的集成 电路。设计一款基于CD4511八路抢答器,该电路包括抢答,编 码,优先,锁存,数显和复位。 8、基于NE555+CD4017流水彩灯的设计与实现 以NE555和CD4017为核心,设计制作一个流水彩灯,使之通 过调节电位器旋钮,可调整彩灯的流动速度。 9、基于用CD4067、CD4013、 NE555跑马灯的设计与实 现

实验五 用状态机实现序列检测器的设计

实验五用状态机实现序列检测器的设计 一、实验目的 1.熟悉QuartusⅡ软件应用环境,了解实验流程。 2.编写简单的Verilog代码,并在QuartusⅡ中进行调试和验证,并在EDA6000中下载代 码和验证。 3.掌握用状态机(State Machine)实现序列检测器的设计。 二、实验原理 假设检测器预先已经设定一个8位序列d,那么当由din端口串行输入的一个8位序列,与d完全相同时,检测器输出代码1010,即在试验箱上的LED上显示一个“A”;否则,检测器输出1110,即在试验箱上的LED上显示一个“E”。同时,当清零信号clr有效时,输出为1110。由清零信号clr和输入信号din共同控制状态机的状态变化。 三、实验内容 1、检测一组二进制序列信号,当连续的脉冲信号和预先设定的序列d相同时,显示字符“A”,否则显示“E”。 2、使用工具为译码器建立一个元件符号 3、设计仿真文件,进行验证。 4、编程下载并在实验箱上进行验证。 四、实验步骤 1.新建Verilog工程项目,编写代码并保存至与模块名对应的项目文件夹。 2.编译程序,编译无误后,在【tools】>【netlist viewers】里面选择RTL Viewer,观察电 路结构;在【tools】>【netlist viewers】里面选择State Machine Viewer,查看状态机转换图。 3.新建波形文件进行仿真。保存时要和源程序存放在同一目录下。设置好输入波形参数后, 开始仿真。在仿真后输入输出波形中观察逻辑关系是否正确。 4.将实验箱和PC合理连接起来。打开EDA6000软件,设置好芯片类型为ACEX1K (EP1K30TC144-3),载入模式12。 5.根据EDA6000界面内管脚对应芯片的实际管脚在QUARTUSⅡ里面设定管脚号并检查 无误。 6.将程序下载至FPGA内,并在EDA6000软件界面内进行验证测试。 程序代码 module SCHK(clk,din,clr,d,err); input clk,din,clr; input [7:0]d; output [3:0]err; parameter s0=0,s1=1,s2=2,s3=3,s4=4,s5=5,s6=6,s7=7,s8=8; reg [8:0]cs,ns; reg [3:0]err; always @(posedge clk or posedge clr) begin if(clr) cs<=s0; else cs<=ns; case (cs) s0:if(din==d[0] ) ns<=s1; else ns<=s0;

数字逻辑电路实验报告

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

二、试验目的: 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

设计一个1010的序列检测器

二、设计一个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四种状态,其编码后的状态转换图和状态转换表:

《数字电路课程设计》

实验三旋转灯光电路与追逐闪光灯电路 一、实验目的 1.熟悉集成电路CD4029、CD4017、74LS138的逻辑功能。 2.学会用74LS04、CD4029、74LS138组装旋转灯光电路。 3. 学会用CD4069、CD4017组装追逐闪光灯电路。 二、实验电路与原理 1.旋转灯光电路: 图3-1 旋转灯光电路 将16只发光二极管排成一个圆形图案,按照顺序每次点亮一只发光二极管,形成旋转灯光。实现旋转灯光的电路如图3-1所示,图中IC1、R1、C1组成时钟脉冲发生器。IC2为16进制计数器,输出为4位二进制数,在每一个时钟脉冲作用下输出的二进制数加“1”。计数器计满后自动回“0”,重新开始计数,如此不断重复。 输入数据的低三位同时接到两个译码器的数据输入端,但是否能有译码器输出取决于使能端的状态。输入数据的第四位“D”接到IC3的低有效使能端G2和IC4的高有效使能端G1,当4位二进制数的高位D为“0”时,IC4的G1为“0”,IC4的使能端无效,IC4无译码输出,而IC3的G2为“0”,IC3使能端全部有效,低3位的CBA数据由IC3译码,输出D=0时的8个输出,即低8位输出(Y0~Y7)。当D为“1”时IC3的使能端处于无效状态,IC3无译码输出;IC4的使能端有效,低3位CBA数据由IC4译码,输出D=1时的8个输出,即高8位输出(Y8~Y15)。 由于输入二进制数不断加“1”,被点亮的发光二极管也不断地改变位置,形成灯光地“移动”。改变振荡器的振荡频率,就能改变灯光的“移动速度”。

注意:74LS138驱动灌电流的能力为8mA,只能直接驱动工作电流为5mA的超高亮发光二极管。若需驱动其他发光二极管或其他显示器件则需要增加驱动电路。 2. 追逐闪光灯电路 图 3-2 追 逐 闪 光 灯 电 路 ( 1) . CD 401 7 的 管 脚功能 CD4017集成电路是十进制计数/时序译码器,又称十进制计数/脉冲分频器。它是4000系列CMOS数字集成电路中应用最广泛的电路之一,其结构简单,造价低廉,性能稳定可靠,工艺成熟,使用方便。它与时基集成电路555一样,深受广大电子科技工作者和电子爱好者的喜爱。目前世界各大通用数字集成电路厂家都生产40171C,在国外的产品典型型号为CD4017,在我国,早期产品的型号为C217、C187、CC4017等。 (2)CD4017C管脚功能 CMOSCD40171C采用标准的双列直插式16脚塑封,它的引脚排列如图3-3(a)所示。 CC4017是国标型号,它与国外同类产品CD4017在逻辑功能、引出端和电参数等方面完全相同,可以直接互换。本书均以CD40171C为例进行介绍,其引脚功能如下: ①脚(Y5),第5输出端;②脚(Y1),第1输出端,⑧脚(Yo),第0输出端,电路清零 时,该端为高电平,④脚(Y2),第2输出端;⑤脚(Y6),第6输出端;⑥脚(Y7),第7输出端;⑦脚(Y3),第3输出端;⑧脚(Vss),电源负端;⑨脚(Y8),第8输出端,⑩脚(Y4),第4输出端;11脚(Y9),第9输出端,12脚(Qco),级联进位输出端,每输入10个时钟脉冲,就可得一个进位输出脉冲,因此进位输出信号可作为下一级计数器的时钟信号。13脚(EN),时钟输入端,脉冲下降沿有效;14脚(CP),时钟输入

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

南昌大学实验报告姓名: 学号: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作出状态转换表及状态转换图如下:

数字电路课程设计报告

课程设计任务书 学生姓名:吴培力专业班级:信息SY1201 指导教师:刘可文工作单位:信息工程学院 题目: 数字式电子锁的设计与实现 初始条件: 本设计既可以使用集成电路和必要的元器件等,也可以使用单 片机系统构建数字密码电子锁。自行设计所需工作电源。电路组成 原理框图如图1,数字密码锁的实际锁体一般由电磁线圈、锁栓、 弹簧和锁柜构成。当线圈有电流时,产生磁力,吸动锁栓,即可开 锁。反之则不开锁。 图1 数字式电子锁原理框图要求完成的主要任务:(包括课程设计工作量及技术要求,以及说明书撰写等具体要求) 1、课程设计工作量:1周。 2、技术要求: 1)课程设计中,锁体用LED代替(如“绿灯亮”表示开锁,“红灯亮”表示闭锁)。 2)其密码为4位二进制代码,密码可以通过密码设定电路自行设定。 3)开锁指令为串行输入码,当开锁密码与存储密码一致时,锁被打开。当开锁密码与存储密码不一致时,可重复进行,若连续三次未将锁打开,电路则报警并实现自锁。(报警动作为响1分钟,停10秒) 4)选择电路方案,完成对确定方案电路的设计。计算电路元件参数与元件选择、并画出总体电路原理图,阐述基本原理。安装调试设计电路。 3、查阅至少5篇参考文献。按《武汉理工大学课程设计工作规范》要求撰写设计报告书。全文用A4纸打印,图纸应符合绘图规范。 时间安排: 1、年月日,布置作课设具体实施计划与课程设计报告格式的要求说明。 2、年月日至年月日,方案选择和电路设计。 3、年月日至年月日,电路调试和设计说明书撰写。 4、年月日,上交课程设计成果及报告,同时进行答辩。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

quartus设计状态机实现序列检测器

用状态机实现序列检测器的设计 一、原理 序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果与检测器预先设置的码相同,则输出为1,否则输出为0。 二、内容与步骤: 1、状态转换图 2、设计一个序列检测器,对1110010进行检测,编写实验程序。 3、对程序进行仿真测试并给出仿真波形。 4、仿真通过后进行引脚锁定,再进行一次全编译,并下载到实验箱上进行验证。 三、状态机源程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY STATEMACHINE IS PORT(DIN,CLK,RST:IN STD_LOGIC; SOUT:OUT STD_LOGIC); END STATEMACHINE; ARCHITECTURE BEHA V OF STATEMACHINE IS TYPE STATES IS (S0,S1,S2,S3,S4,S5,S6,S7); SIGNAL ST,NST:STATES:=S0; BEGIN COM:PROCESS(ST,DIN) BEGIN CASE ST IS WHEN S0=>IF DIN='1' THEN NST<=S1;ELSE NST<=S0;END IF; WHEN S1=>IF DIN='1' THEN NST<=S2;ELSE NST<=S0;END IF; WHEN S2=>IF DIN='1' THEN NST<=S3;ELSE NST<=S0;END IF; WHEN S3=>IF DIN='1' THEN NST<=S3;ELSE NST<=S4;END IF; WHEN S4=>IF DIN='1' THEN NST<=S1;ELSE NST<=S5;END IF; WHEN S5=>IF DIN='1' THEN NST<=S6;ELSE NST<=S0;END IF; WHEN S6=>IF DIN='1' THEN NST<=S2;ELSE NST<=S7;END IF; WHEN S7=>IF DIN='1' THEN NST<=S1;ELSE NST<=S0;END IF; WHEN OTHERS=>NST<=S0; END CASE;

序列检测器实验报告

序列检测器设计 实验内容: 设计一个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";

序列检测器的一种简化实现算法

第8卷第6期石家庄学院学报Vol.8,No.62006年11月JournalofShijiazhuangUniversityNov.2006序列检测器的一种简化实现算法 李俊红,解建军 (河北师范大学数学与信息科学学院,石家庄050016) 摘要:分析了序列检测器的内部原理,给出它的一种新硬件实现.利用它无需对状态图进行状态化简,极大地简化了时序线路的设计.最后结合具体实例说明了该设计思想的详细步骤和具体实现方法. 关键词:子串;主串;序列检测器 中图分类号:TP16文献标识码:A文章编号:1673-1972(2006)06-0063-03 1序列检测器原理 序列检测是指将一个指定的序列从数字流中识别出来,或在主串中查询相应子串,一般可以通过软件方法或时序电路即硬件方法实现.有关软件实现方法的研究可参见文献[1],本文主要针对时序电路进行讨论.用硬件方法实现序列检测器时,检测器中存储模式串,主串可以通过输入端流入检测器[2,3].在主串的输入过程中,检测器可以动态检测子串.检测器利用时序线路记忆已检测出的有效序列,并与自身所含的模式串进行比对,若检测成功,输出端自动输出成功标记[4].设计一个“11100”序列检测器,当识别到一组序列时,输入一个高电平.由于采用时序线路,主串的内容应每给一个上升沿或下降沿输入一位,具体应视所选触发器类型而定. 我们提出一种新硬件实现方法,在该方法中对每一个状态都根据实际意义给予特殊的含义,具体含义在后面的实例中再加以说明,由于不存在重复状态,故最终的状态图不用化简. 序列检测器的初态是指被检序列的第一位出现前的特定状态,此状态后如果输入的代码对检测有效(即被测序列的第一位),则相应次态为新的状态(第2个状态,它记住了被测序列的第一位),否则相应次态仍为初态.第2个状态是指被检序列的第一位出现后的特定状态,此状态后如果输入的代码对检测有效,(即被测序列的第2位)则相应次态为新的状态(第2个状态,它记住了被测序列的前2位),否则判断最近输入的代码是否是被检序列的第一位,是则相应次态仍为第2个状态,否则相应次态为初态.以次类推,第i个状态记住了被检序列的前i-1位,相应次态确定方法如下: 假设序列长度为n,当i<n时,如果第i个状态后输入的一位代码是被检序列的第i位,则次态为新的状态(记住了被检序列的前i位),否则次态按如下规则选择:从初态开始输入的i位代码中如果其中的后i-j位为被检序列的前i-j位,则次态为第i-j+1个状态(j=1,2,...,i-1,找到次态即停止),否则次态为初态.此时所有的外输出均为‘0’. 当i=n时,第n个状态已经记住了被检序列的前n-1位,此状态后输入的一位代码如果是被检序列的第n位,则外输出为‘1’,否则外输出为‘0’,其次态按如下规则选择:从初态开始输入的n位代码中如果其中的后n-j位为被检序列的前n-j位,则次态为第i-j+1个状态(j=1,2,...,n-1,找到次态即停止),当j=n时,次态为初态. 按上述方法构造的原始状态转移图中恰好含n个状态,且每个状态都有确定的含义,避免了其设计过程中,构造原始状态转移图繁杂,化简原始状态转移图麻烦的弊端,设计时既逻辑清晰,又不用化简,从而极大地简化了该类线路的设计. 收稿日期:2005-12-09 基金项目:河北省石家庄市科学研究与发展计划项目(05213570);河北师范大学青年基金资助(L2005Q02) 作者简介:李俊红(1971-),女,山西运城人,河北师范大学数学与信息科学学院讲师,硕士,研究方向:并行逻辑模拟,计算机系统结构.

数字电路课程设计弹道设计

淮海工学院 课程设计报告书 课程名称:电子技术课程设计(二)题目:弹道计时器设计 系(院): ////// 学期: 2010-2011-1 专业班级: 88 姓名: 999999 学号: 555555

一、所选课题: 弹道计时器的设计 二、任务与要求 设计一个用来测量手枪子弹等发射物速度的便携式电池供电计时器,这种计时器可用来测定子弹或其他发射物的速度。竞赛射手通常用这种设备来测定装备的性能。 基本操作要求是:射手在两个分别产生起始测量脉冲和终止测量脉冲的光敏传感器上方射出一个发射物,两个光传感器(本例中假定为阴影传感器)分开放置,两者之间的距离已知。发射物在两个传感器之间的飞行时间直接与发射物的速度成正比。如下图所示,当子弹等发射物从上方经过起始传感器产生ST 信号,经过终止传感器时产生SP 信号。传感器之间的距离是固定的。通过测量子弹等发射物经过传感器之间的时间T 就可计算出子弹的速度V=S/t 。 图1 三、方案制定 使用中规模集成电路设计弹道计时器。此方案中主要用到555定时器、十进制计数器、译码器、七段数码管以及一些小型门电路和触发器等。 四、弹道计时器的原理 运用中规模集成电路设计本课题要分为一下几点: (1)传感器对计数器的控制。 在传感器的选择上,要注意传感器的输出信号能否直接控制下一级电路。此论文中采用天幕靶控制计数器的工作与停止。天幕靶是一种光电传感器,它能将光信号转变成电信号,在子弹遮蔽第一个天幕靶时,即会产生一个脉冲,此脉冲带动计数器工作,在子弹遮蔽下一个天幕靶时又产生一个脉冲,让计数器停止工作。若将此脉冲作为使能信号, 就必须使其从子弹到达第一个天幕靶一直维持到 起始传感器 终止传感器 阳光 弹道

实验三_用状态机实现序列检测器的设计Verilog

实验三用状态机实现序列检测器的设计 一、实验目的: 用状态机实现序列检测器的设计,并对其进行仿真和硬件测试。 二、原理说明: 序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出a,否则输出b。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。在检测过程中,任何一位不相等都将回到初始状态重新开始检测。例3-1描述的电路完成对序列数"11100101"的。当这一串序列数高位在前(左移)串行进入检测器后,若此数与预置的密码数相同,则输出“a”,否则仍然输出“b”。 【例3-1】 //顶层文件: module XULIEQI(clk,reset,din18,LED7S); input clk; input reset; input [17:0] din18; output [6:0] LED7S; wire [3:0] AB; wire [17:0] din18; xulie u1 (clk, din18, reset, din); schk u2 (din,clk,reset,AB); decl7s u3 (AB,LED7S); endmodule //串行检测: module schk(DIN,CLK,CLR,AB); input DIN,CLK,CLR; output[3:0] AB; reg [3:0] AB; reg [7:0] Q;

parameter idle = 8'b00000000, a = 8'b00000001, b = 8'b00000010, c = 8'b00000100, d = 8'b00001000, e = 8'b00010000, f = 8'b00100000, g = 8'b01000000, h = 8'b10000000; parameter data=8'b11100101; always @(posedge CLK or negedge CLR) if(!CLR) begin Q <= idle; end else begin case(Q) idle: begin if(DIN==data[7]) Q<=a; else Q<=idle; end a: begin if(DIN== data[6]) Q<=b; else Q<=idle; end b: begin if(DIN== data[5]) Q<=c; else Q<=idle; end c: begin if(DIN== data[4]) Q<=d; else Q<=c; end d: begin

序列检测器的设计 实验报告.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;

110序列检测器的设计及仿真实现

题目:设计110序列检测器,当输入信号时输 出,否则 一、设计思路 我们采用Moore机完成这个功能。对于触发器的选择,为了简便我们选用D触发器以及基本的门电路完成基本设计。 二、时钟同步状态机 1根据题目要求我们得到下面的状态图 状态表示的意义Q X=0 X=1 输出Z 等待1的出现 A A B 0 出现1 B A C 0 出现11 C D C 0 出现110 D A B 1 * Q 2 转移输出表 01 Q Q输入X 输出Z X=0 X=1 00 00 01 0 01 00 11 0 11 10 11 0

10 00 01 1 01Q Q * * 3 状态图如图: 通过卡诺图化简可得 转移方程: 00111=Q Q Q Q X Q X * * += 输出方程:01 Z Q Q ? = 我们选择D 触发器作为记忆电路部分 由D 触发器的特征方程: Q D * = 得激励方程: 00111D =Q Q Q X D X += 三、V erilog 程序如下: module shiyan2 (clk,x,z); input clk,x; output z; wire[1:0] state;

wire[1:0] excite; nextlogic u1(x,state,excite); statememory u2(clk,excite,state); outputlogic u3(state,z); endmodule module statememory (clk,d,q); input clk; input[1:0] d; output[1:0] q; reg[1:0] q; always @ (posedge clk) begin q <= d; end endmodule module nextlogic (x,q,d); input x; input[1:0] q; output[1:0] d; assign d[0]=(q[1]&q[0])|(q[1]&x); assign d[1]=x; endmodule

数字电路课程设计

数字电路课程设计 一、概述 任务:通过解决一两个实际问题,巩固和加深在课程教学中所学到的知识和实验技能,基本掌握常用电子电路的一般设计方法,提高电子电路的设计和实验能力,为今后从事生产和科研工作打下一定的基础。为毕业设计和今后从事电子技术方面的工作打下基础。 设计环节:根据题目拟定性能指标,电路的预设计,实验,修改设计。 衡量设计的标准:工作稳定可靠,能达到所要求的性能指标,并留有适当的裕量;电路简单、成本低;功耗低;所采用的元器件的品种少、体积小并且货源充足;便于生产、测试和维修。 二、常用的电子电路的一般设计方法 常用的电子电路的一般设计方法是:选择总体方案,设计单元电路,选择元器件,计算参数,审图,实验(包括修改测试性能),画出总体电路图。 1.总体方案的选择 设计电路的第一步就是选择总体方案。所谓总体方案是根据所提出的任务、要求和性能指标,用具有一定功能的若干单元电路组成一个整体,来实现各项功能,满足设计题目提出的要求和技术指标。 由于符合要求的总体方案往往不止一个,应当针对任务、要求和条件,查阅有关资料,以广开思路,提出若干不同的方案,然后仔细分析每个方案的可行性和优缺点,加以比较,从中取优。在选择过程中,常用框图表示各种方案的基本原理。框图一般不必画得太详细,只要说明基本原理就可以了,但有些关键部分一定要画清楚,必要时尚需画出具体电路来加以分析。 2.单元电路的设计 在确定了总体方案、画出详细框图之后,便可进行单元电路设计。 (1)根据设计要求和已选定的总体方案的原理框图,确定对各单元电路的设计要求,必要时应详细拟定主要单元电路的性能指标,应注意各单元电路的相互配合,要尽量少用或不用电平转换之类的接口电路,以简化电路结构、降低成本。

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; //定义中间变量

相关主题
文本预览
相关文档 最新文档