110序列检测器仿真报告
11001序列检测器设计实训报告
![11001序列检测器设计实训报告](https://img.taocdn.com/s3/m/9ea9d554be1e650e52ea99c5.png)
电子技术设计实训报告指导教师:**小组成员:*201458244**201458244**201458244**201458244*成绩评定:教师签名:评定时间设计1.题目:“11001”序列检测器。
原始条件:逻辑器件:CMOS门电路集成芯片:74SL20 74LS00 74LS1122.要求完成设计的主要任务:1)能够运用数字逻辑的理论和方法,把时序逻辑电路设计和组合逻辑电路设计相结合,设计一个有实际应用的数字逻辑电路。
2)使用同步时序逻辑电路的设计方法,设计“11001”序列检测器。
写出设计中的过程。
画出课程设计图。
3)在试验设备上,使用74SL20 74LS00 74LS112集成电路连接、调试和测试“11001”序列检测器电路。
3.小组成员分工*设计序列*电子版实验报告,化简卡诺图*:画电路图、仿真电路图*:检查设计失误、物理机电路连线电路分析设计过程4.逻辑抽象:初始状态SS:11:11S2:110S3S:11004:11001S5根据任务书要求,设计的序列检测器有一个外部输入A 和一个外部输出 Y。
输入和输出的逻辑关系为:正常情况下Y=0,出现A=11001时,Y=15.状态转换图6.状态转换表表1由表1可知,S1和S5是等价状态,故可以合并。
下图为化简后的状态转换图。
''0101*1Q Q Q AQ Q +=7. 卡若图化简规定电路状态编码,电路需要5个状态。
需要3(2n-1<状态数≦2n )个触发器。
现取Q 2Q 1Q 0=001表示S 1,Q 2Q 1Q 0=010表示S 2,Q 2Q 1Q 0=011表示S 3,Q 2Q 1Q 0=100表示S 4 ,即可得到:S 0:000 S 1:001 S 2:010 S 3 :011 S 4:100由上述转换表可以转化为卡诺图下面即可分解卡诺图⎪⎩⎪⎨⎧++=+=0111*01010*1)''(''Q AQ AQ Q A Q Q Q Q AQ Q '''201201*2Q Q Q A Q Q Q A Q +=''''011001*0Q Q A Q AQ Q AQ Q ++=''0101*1Q Q Q AQ Q +='''201201*2Q Q Q A Q Q Q A Q +=''''011001*0Q Q A Q AQ Q AQ Q ++=2AQ Y =8. 逻辑函数式由上述的卡诺图得到状态方程和输出方程⎪⎩⎪⎨⎧2AQ Y =化简得到上式与JK 触发器的特性方程对照比较可以得出(Q *=JQ ’+K ’Q ))'()'(.....'''1001012.1101012AQ K Q K Q Q A K AQ Q A J AQ J Q Q A J ===⎪⎩⎪⎨⎧+=== 2AQ Y =9.JK 触发器具体实现电路图由上述的式子我们可以画出模拟电路图(完整电路图附页说明)10. 仿真软件仿真效果(截图说明)下面进行仿真实验,X3灯是为了显示0、1输入,X2灯是显示脉冲输入情况。
序列信号检测实验报告
![序列信号检测实验报告](https://img.taocdn.com/s3/m/3c91a64c443610661ed9ad51f01dc281e43a5644.png)
一、实验目的1. 理解序列信号检测的基本原理。
2. 掌握序列信号检测的方法和步骤。
3. 通过实验验证序列信号检测的准确性。
4. 分析实验结果,探讨影响序列信号检测准确性的因素。
二、实验原理序列信号检测是数字信号处理中的一个重要领域,主要研究如何从含有噪声的信号中检测出特定的序列信号。
本实验采用模拟信号检测的方法,通过设计序列信号发生器和检测器,实现对特定序列信号的检测。
三、实验器材1. 信号发生器2. 数据采集器3. 计算机及软件(如MATLAB等)4. 信号分析仪四、实验步骤1. 设计序列信号发生器:- 根据实验要求,设计特定的序列信号,如“1101”。
- 使用信号发生器产生该序列信号。
2. 设计序列信号检测器:- 设计一个检测器,用于检测序列信号。
- 检测器可以采用状态机或有限状态机(FSM)实现。
3. 实验设置:- 将信号发生器产生的序列信号输入到数据采集器。
- 将数据采集器采集到的信号输入到计算机进行后续处理。
4. 信号处理:- 使用MATLAB等软件对采集到的信号进行预处理,如滤波、去噪等。
- 对预处理后的信号进行序列信号检测。
5. 结果分析:- 分析实验结果,比较检测器检测到的序列信号与原始序列信号是否一致。
- 分析影响序列信号检测准确性的因素,如噪声水平、信号带宽等。
五、实验结果与分析1. 实验结果:- 通过实验,成功检测到了设计的序列信号“1101”。
- 检测到的序列信号与原始序列信号基本一致。
2. 结果分析:- 实验结果表明,所设计的序列信号检测器能够有效地检测出特定序列信号。
- 影响序列信号检测准确性的因素主要包括:- 噪声水平:噪声水平越高,检测难度越大。
- 信号带宽:信号带宽越窄,检测难度越大。
- 序列长度:序列长度越长,检测难度越大。
六、实验结论1. 序列信号检测实验验证了序列信号检测的基本原理和方法。
2. 通过实验,掌握了序列信号检测的步骤和技巧。
3. 实验结果表明,所设计的序列信号检测器能够有效地检测出特定序列信号。
序列检测器实验报告
![序列检测器实验报告](https://img.taocdn.com/s3/m/1da0b30e76c66137ee061951.png)
序列检测器设计实验内容:设计一个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。
EDA序列检测器实验报告
![EDA序列检测器实验报告](https://img.taocdn.com/s3/m/df83001ccc7931b764ce1502.png)
《实验七序列检测器实验》实验报告杨丽斌计科二班学号:20080810218一、实验内容及相关描述:设计一个1110010 序列检测器,即检测器连续收到一组串行码“1110010”后,输出检测标志1,否则输出0。
代码序列检测器是一种同步时序电路,它用于搜索,检测输入的二进制代码串中是否出现指定的代码序列,001 序列检测器的原理图如下:CPX 0 1 0 0 1 0 1 0 1 1 0 1Y 0 0 0 0 1 0 0 0 0 0 0 0二、设计思路:本实验依然采用模块化的设计方法,用VHDL语言设计每一个模块,在顶层图上用图形化模式调用相应模块,组成相关的功能总共用到的模块有:1、分频器:将时钟信号进行十分频2、串行并出序列检测器3、串行并行并出序列检测器4、时钟信号扫描端口:用于扫描时钟信号,并根据信号使能相应的数码管5、数码管驱动模块:用于选择数码管6、其他小模块三、相关主要子模块的设计:1、分频器(clk_div):将时钟信号进行十分频:(1)、VHDL语言(2)、波形仿真:波形仿真参数设置:网格时间:100ns,总时间:3us;时钟信号长度:100ns2、串行并出序列检测器:用时序电路设计方法,先做出其状态转移表,再根据状态转移表编写VHDL程序(1)、状态转移表:(2)VHDL语言程序:功能说明:根据所画的状态转移表,编写状态转移的VHDL语言,当输入的串行序列为:1110010时。
在时钟上升沿,输出Q变为1,并行输出的序列sequence为串行序列的并行输出(3)、波形仿真:波形仿真参数设置:网格时间:100ns,总时间:3us;时钟信号长度:100ns3、并入置数的序列检测器:设计说明;该序列检测器使用的是比较器的原理,(1)VHDL语言:功能描述:该序列检测器使用的是比较器的原理,在使能端en有效时,当输入序列为1110010时,输出Q=1,其他情况下Q=0(2)波形仿真图波形仿真参数设置:网格时间:100ns,总时间:3us;时钟信号长度:100ns4、时钟信号扫描模块:(1)VHDL语言:功能描述:用高频时钟信号作为扫描信号,将时钟信号通过计数器计数之后,以7个信号作为一次循环,从而将信号每次一位din扫描到数码管上(2)、波形仿真:波形仿真参数设置:网格时间:100ns,总时间:3us;时钟信号长度:100ns5、数码管驱动模块用于将时钟信号计数,从而选择驱动相应的数码管(1)VHDL语言:功能说明:通过设置7个状态,以时钟信号为标记,时钟信号到来时在每一个状态,选择驱动相应的数码管(2)波形仿真:波形仿真参数设置:网格时间:100ns,总时间:3us;时钟信号长度:100ns7、其他小模块:(1)、序列寄存器功能说明:在串行比较时将序列用用寄存器存储,并通过时钟信号的驱动依次输出波形仿真:波形仿真参数设置:网格时间:100ns,总时间:3us;时钟信号长度:100ns(2)、串行、并行检测器选择模块:VHDL语言:波形仿真:波形仿真参数设置:网格时间:100ns,总时间:3us;时钟信号长度:100ns四、顶层图:1、顶层图电路设计:功能描述及主要管脚说明:重要的管脚输入:din[6..0]:并行输入数据的序列比较En:串行输入数据Clk:数据输入时钟信号(低频)Clk2:扫描时钟信号(高频)Cho:串行、并行选择(0为串行,1为并行)输出:A-G:数码管管脚S[6..0]:连接相应数码管Q:序列检测结果(1为检测到序列1110010,0为没有检测到)2、波形仿真(注:由于时间端总长过小,仿真时会将分频模块先去掉以便能很好的观察到仿真结果,在器件测试时再加上分频模块):波形仿真参数设置:网格时间:100ns,总时间:3us;时钟信号长度:100ns五、实验总结:这次实验的设计、以及相应的编写VHDL语言有以前做计算器的经验,很多模块还是很相似的,因此编写VHDL语言及相关的模块设计除了花了一点时间、并没有遇到多大的阻碍,但是在器件验证过程中却出现了一些问题:主要是高低频时钟信号选择的问题,在这个问题上花了比较多的时间。
序列检测器_实验报告
![序列检测器_实验报告](https://img.taocdn.com/s3/m/d8d7f9dc03d276a20029bd64783e0912a3167c10.png)
一、实验目的1. 理解序列检测器的工作原理和设计方法;2. 掌握时序电路的经典设计方法;3. 学习使用Verilog HDL语言进行状态机的设计;4. 通过实验验证序列检测器的功能。
二、实验原理序列检测器是一种同步时序电路,用于检测输入的一串二进制编码。
当输入序列与预设的编码相匹配时,输出高电平;否则,输出低电平。
序列检测器在数字通信、安全防盗、密码认证等领域有着广泛的应用。
序列检测器的基本工作原理如下:1. 预设一个编码序列,称为目标序列;2. 当输入序列与目标序列相匹配时,输出高电平;3. 当输入序列与目标序列不匹配时,输出低电平。
三、实验器材1. PC机一台;2. EDA教学实验系统一台;3. 下载电缆一根(已接好);4. 导线若干。
四、实验步骤1. 设计序列检测器的Verilog代码;2. 在EDA教学实验系统上编译、仿真和下载Verilog代码;3. 连接实验电路,下载Verilog代码;4. 通过逻辑分析仪观察输出波形,验证序列检测器的功能。
五、实验内容1. 设计一个长度为4位的序列检测器,目标序列为1001;2. 设计一个长度为8位的序列检测器,目标序列为11001001;3. 通过实验验证序列检测器的功能。
六、实验代码```verilogmodule seqdet(input clk, // 时钟信号input rst, // 复位信号input [3:0] din, // 输入序列output reg out // 输出信号);// 定义状态localparam [1:0] IDLE = 2'b00,MATCH = 2'b01,NOMATCH = 2'b10;// 状态寄存器reg [1:0] state, nextstate;// 输出函数always @(posedge clk or posedge rst) beginif (rst) beginstate <= IDLE;out <= 1'b0;end else beginstate <= nextstate;out <= (state == MATCH) ? 1'b1 : 1'b0; endend// 激励函数always @() begincase (state)IDLE: beginif (din == 4'b1001) beginnextstate = MATCH;end else beginnextstate = NOMATCH;endendMATCH: beginnextstate = IDLE;endNOMATCH: beginnextstate = IDLE;enddefault: beginnextstate = IDLE;endendcaseendendmodule```七、实验结果与分析1. 长度为4位的序列检测器:当输入序列为1001时,输出高电平;当输入序列不为1001时,输出低电平。
(整理)实验三序列发生器与序列检测器实验报告.
![(整理)实验三序列发生器与序列检测器实验报告.](https://img.taocdn.com/s3/m/8d8f04844afe04a1b171de29.png)
南昌大学实验报告姓名: 学号: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 issignal bs: std_logic_vector(15 downto 0):="0111010011011010";beginxlout<=bs(15);process (clk1hz)beginif (clk1hz'event and clk1hz='1') thenbs<= bs(14 downto 0)&bs(15);先将序列最高位输出至序列检测器中,然后在一个脉冲作用下,将此时最高位变成最低位,其余14位不变,使序列循环移动,最终形成一个16位循环序列。
实验5 序列检测器
![实验5 序列检测器](https://img.taocdn.com/s3/m/e77a1d45cf84b9d528ea7a75.png)
数字系统设计与PLD应用实验报告实验名称:实验5序列检测器学院:大数据与信息工程学院专业:电子信息工程姓名:李晓雪学号:1108040198年级:大四任课教师:尉学军2014 年 12 月 7 日实验5 序列检测器一.实验目的(1)了解用状态机的方法设计序列检测器(2)实验一个11010串行序列检测器,用VHDL语言描述该电路二、实验原理序列检测器的示意图如图一所示11010序列检测器的状态转换图如图二所示三、实验内容(1)用VHDL语言编写11010序列检测器源程序。
给出正确仿真波形图。
(2)用VHDL分别设计一个包含(11010)和不包含的序列发生器。
(3)将上述两个序列发生器分别和序列检测器结合成一个文件(级联),并编译、模拟获得正确的仿真波形。
四、实验结果1、序列检测器(检测11010)根据状态转换通过VHDL语言实现序列检测器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY jc11010 ISPORT(DIN,CLK,RST:IN STD_LOGIC;SOUT:OUT STD_LOGIC);END jc11010 ;ARCHITECTURE BEHA V OF jc11010 ISTYPE STATES IS (S0,S1,S2,S3,S4);SIGNAL ST,NST:STA TES:=S0;BEGINCOM:PROCESS(ST,DIN) BEGINCASE ST ISWHEN 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<=S2;ELSE NST<=S3;END IF; WHEN S3=>IF DIN='1' THEN NST<=S4;ELSE NST<=S0;END IF; WHEN S4=>IF DIN='1' THEN NST<=S2;ELSE NST<=S0;END IF; WHEN OTHERS=>NST<=S0;END CASE;END PROCESS;REG:PROCESS (CLK,RST)BEGINIF RST='1' THEN ST<=S0;ELSIF CLK'EVENT AND CLK='1' THEN ST<=NST;END IF;END PROCESS REG;SOUT<='1' WHEN ST=S4 ELSE '0';END BEHA V;波形仿真结果:2.采用状态机方法设计序列发生器11010序列产生器的VHDL语言:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY csq11010 ISPORT(CLK:IN STD_LOGIC;Z :OUT STD_LOGIC);END csq11010 ;ARCHITECTURE RTL OF csq11010 ISTYPE STATE_TYPE IS(S0,S1,S2,S3,S4,S5);SIGNAL CURRENT_STATE,NEXT_STATE:STATE_TYPE; BEGINSYNCH: PROCESSBEGINWAIT UNTIL CLK'EVENT AND CLK='1'; CURRENT_STATE<=NEXT_STATE;END PROCESS;STATE_TRANS:PROCESS(CURRENT_STATE)BEGINCASE CURRENT_STATE ISWHEN S0=>NEXT_STATE<=S1;Z<='1';WHEN S1=>NEXT_STATE<=S2;Z<='1';WHEN S2=>NEXT_STATE<=S3;Z<='0';WHEN S3=>NEXT_STATE<=S4;Z<='1';WHEN S4=>NEXT_STATE<=S5;Z<='0';WHEN S5=>NEXT_STATE<=S0;Z<='1';END CASE;END PROCESS;END RTL;仿真波形结果:(产生的11010序列串)3、随机序列产生器(产生序列1100101)VHDL语言:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SY4 ISPORT(CLK:IN STD_LOGIC;Z :OUT STD_LOGIC);END SY4 ;ARCHITECTURE RTL OF SY4 ISTYPE STATE_TYPE IS(S0,S1,S2,S3,S4,S5,S6);SIGNAL CURRENT_STATE,NEXT_STA TE:STA TE_TYPE; BEGINSYNCH: PROCESSBEGINWAIT UNTIL CLK'EVENT AND CLK='1';CURRENT_STATE<=NEXT_STA TE;END PROCESS;STA TE_TRANS:PROCESS(CURRENT_STATE)BEGINCASE CURRENT_STATE ISWHEN S0=>NEXT_STATE<=S1;Z<='1';WHEN S1=>NEXT_STATE<=S2;Z<='1';WHEN S2=>NEXT_STATE<=S3;Z<='0';WHEN S3=>NEXT_STATE<=S4;Z<='0';WHEN S4=>NEXT_STATE<=S5;Z<='1';WHEN S5=>NEXT_STATE<=S6;Z<='0';WHEN S6=>NEXT_STATE<=S0;Z<='1';END CASE;END PROCESS;END RTL;波形仿真结果:3、11010序列产生器与11010序列检测器级联后的电路图:波形仿真结果:4、不包含11010的任意序列产生器与11010序列检测器级联后的电路图:波形仿真结果:。
lab10_0101序列检测器仿真(ModelSim)
![lab10_0101序列检测器仿真(ModelSim)](https://img.taocdn.com/s3/m/b0d6902dcfc789eb172dc8d8.png)
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信号中的毛刺。
EDA设计实验_序列检测器-
![EDA设计实验_序列检测器-](https://img.taocdn.com/s3/m/2f8fe8e1172ded630b1cb656.png)
实验题目:设计串行数据检测器实验说明:设计一个“1101”串行数据检测器。
使得但输出序列中出现“1001”时,结果中就输出1。
输入/输出如下所示:输入x:000 101 110 011 011 101 101 110 101输出z:000 000 000 010 010 000 001 000 000实验分析:初始状态设为s0,此时检测数据序列为“0000”,当再检测到一个0时,仍为s0,当检测到1时,进入下一个状态s1,此时序列为“0001”;当在状态s1检测到0时,进入到状态s2,此时序列为“0010”,当检测到1时,仍为s1;当在状态s2检测到0时,进入到状态s3,此时序列为“0100”,当检测到1时,进入s1;当在状态s3检测到0时,进入s0,当检测到1时,进入状态s4,此时序列为“1001”,结果输出为1;当在s4检测到0时,进入状态s2,当检测到1时,进入状态s1。
状态图如下:实验代码:module sjjcq10_3(x,z,clk,reset,state);input x,clk,reset;output z;output[2:0]state;reg[2:0]state;reg z;parameter s0='d0,s1='d1,s2='d2,s3='d3,s4='d4;always@(posedge clk)beginif(reset)begin state<=s0;z<=0;endelsecasex(state)s0: beginif(x==0) begin state<=s0;z<=0;endelse begin state<=s1;z<=0;endends1: beginif(x==0) begin state<=s2;z<=0;endelse begin state<=s1;z<=0;endends2:beginif(x==0) begin state<=s3;z<=0;endelse begin state<=s1;z<=0;endends3:beginif(x==0) begin state<=s0;z<=0;endelse begin state<=s4;z<=1;endends4:beginif(x==0) begin state<=s2;z<=0;endelse begin state<=s1;z<=0;endenddefault: state<=s0;endcaseendendmodule实验仿真波形:分析:每当到达状态四即s4,此时检测序列为“1101”,输出即为1.。
FPGA实验报告10--0101序列检测器
![FPGA实验报告10--0101序列检测器](https://img.taocdn.com/s3/m/6542f5dd50e2524de5187e66.png)
Lab 10 0101序列检测器仿真集成1101班1.实验目的熟悉用Modelsim进行波形仿真的方法。
掌握用Verilog HDL 语言描述0101序列检测器的方法。
熟悉用Verilog HDL 语言编写testbench。
2.实验内容a)理解并掌握状态机与testbench的描述方法。
b)使用Modelsim软件得到仿真波形。
c)使用DE0开发板下载。
3.代码分析状态机描述定义模块名与输入输出,clk为时钟信号,rst为控制信号,seq 为待检测信号;输出是det.同时定义了四个状态(独热码)s0,s1,s2,s3;和reg型变量state,next_state.module seqdet(clk,rst,seq,det);input clk;input rst;input seq;output det;parameter s0=4'h1;parameter s1=4'h2;parameter s2=4'h4;parameter s3=4'h8; // 独热码reg det;reg [3:0] state, next_state状态转移:当rst=1时,state初始化为s0状态;当rst=0时,state的状态随着驱动变化。
always@(posedge clk) beginif(rst)state <= s0;elsestate <= next_state;end状态驱动:随着待检测信号的变化,状态在s0,s1,s2,s3之间变化,最终影响输出。
a lways @(posedge clk) begincase(state)s0: next_state=((seq==1)?s0:s1);s1: next_state=((seq==1)?s2:s1);s2: next_state=((seq==1)?s0:s3);s3: next_state=((seq==1)?s0:s1);default: next_state=((seq==1)?s0:s1);endcaseend输出:当现态state=s3时,det=1,即检测到一个0101序列。
110序列检测器仿真报告
![110序列检测器仿真报告](https://img.taocdn.com/s3/m/79cf1d3531126edb6f1a10cb.png)
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) //电平触发事件Beginnext_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:beginnext_state<=(data_in==1'b1)?s2:s0;if(data_in==1'b0)data_out=1'b1;endendcaseendendmodule5)所调用的分频器的模块:module fenpinqi(Q,CP);output Q; //定义输出端口input CP; //定义输入端口wire [32:0]A; //定义中间变量counter(A,CP); //调用计数器进行计数D_FF(Q,~Q,CP,A); //调用D触发器是信号发生翻转endmodulemodule 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自增并输出endmodulemodule D_FF(Q,D,CP,CR); //D触发器output Q; //定义输出端input D,CP; //定义输入端及D信号输入input [32:0]CR; //定义输入变量reg Q; //定义中间变量always@(posedge CP) //采用边沿触发if(CR==0)Q<=D; //将D值赋给Qelse Q<=Q; //Q保持不变endmodule4.实验步骤1)打开Quartus软件,选择“File=>New Project Wizard”,在弹出的窗口中输入项目的名称和存储位置。
110序列检测器的设计及仿真实现
![110序列检测器的设计及仿真实现](https://img.taocdn.com/s3/m/dabe30f4bd64783e09122bfc.png)
题目:设计110序列检测器,当输入信号尢-110时输出二T,否则0一、设计思路我们采用Moore机完成这个功能。
对于触发器的选择,为了简便我们选用D触发器以及基本的门电路完成基本设计。
二、时钟同步状态机1根据题目要求我们得到下面的状态图2转移输出表输出方程:Z QoQi 我们选择D 触发器作 为记忆电路部分由D 触发器的特征方 程:QD 得激励方程:D°=Q0QiQXDi X三、Verilog 程序女口下: module shiyan2 (elk, x, z); in put elk,x; output z;wire[1:0] state; wire[1:0] excite; nextlogic ul (x, state, excite);10 3状态图如图:00 01K-1通过卡诺图化简可得 转移方程:Qo 二QoQi QiXQiXstatememory u2(elk, excite, state); outputlogic u3 (state, z);endmodulemodule statememory (elk,d, q); input elk;inpd;output[1:0] q;reg[l:0] q;always @ (posedge elk) begin q <= d;endendmodulemodule nextlogic (x, q, d);input x; inpq; output[1:0] d;assign d[0] = (q[l]&q[0]) | (q[l]&x); assign d[l]=x;endmodulemodule outputlogic(q, z);in put[1:0]q;output z;assign z=(!q[l])&q[0];En dmodule四、仿真结果及电路图11得到功能仿真结果为:时序仿真结果为:pi 0阳〃■( f :q 2叮《 j60.0 Jis 120. 0 LS JEflOns 200. 0 ns « Cl u 渤门叽300 0 =1 JSO. Ons qo: 0 ns n J 匹qeo. 0 ■ 11— Ih AD .F^L L rn ru一一Lj~Ln— r r-uni利用程序生成的电路图为ne4f>gic:u1sta:eme^or/u2xjtputfogi::u3q[T. OHeg叩clkl >z从电路图和仿真结果来看这次的仿真能够完全达到题目的要求。
110序列编码检测器的设计
![110序列编码检测器的设计](https://img.taocdn.com/s3/m/083029d003d8ce2f0166238e.png)
110序列编码检测器的设计设计一个110序列编码检测器。
设计一个序列检测电路,当检测到输入信号出现110的序列编码(按自左至右的顺序)时,电路输出为1,否则输出为0。
指导教师签名:2008年7月 6 日指导教师签名:2008 年7月日验收盖章2008年月日熟悉集成电路的引脚排列。
掌握各种芯片的逻辑功能及使用方法。
了解序列检测器的组成及工作原理。
熟悉序列检测器的设计和制作。
由给定的逻辑功能建立原始状态图和原始状态表。
状态简化。
状态分配。
选择触发器类型。
确定激励方程和输出方程组。
画出逻辑图,并检查自启动能力。
(1)由给定的逻辑功能建立原始状态图和原始状态表从给定的逻辑功能可知,电路有一个输入信号A和一个输出信号Y,电路功能是对输入信号A的编码序列进行检测,一旦检测到信号A出现连续编码为110序列时,输出为1,检测到其他编码序列,则输出均为0。
设电路的初始状态为a,如图1中大箭头所指。
在此状态下,电路输出Y=0,这时可能的输入有A=0和A=1两中情况。
当CP脉冲相应边沿到来时,若A=0,则是收到0,应保持在状态a不变;若A=1,则转向状态b,表示电路收到一个1。
当在状态b时,若输入A=0,则表明连续输入编码为10,不是110,则应回到初始状态a,重新开始检测;若A=1,则进入c,表示已连续收到两个1。
在状态c时,若A=0,表示已收到序列编码110,则输出Y=1,并进入状态d;若A=1,则收到的编码为111,应保持在状态c不变,看下一个编码输入是否为A=0;由于尚未收到最后的0,故输入仍为0。
在状态d,若输入A=0,则应回到状态a,重新开始检测;若A=1,电路应转向状态b,表示在收到110之后又重新收到一个1,已进入下一轮检测;在d状态下,无论A为何值,输出Y均为0。
根据上述分析,可以得出原始状态图和表1所示的原始状态表。
1)nn+1nn+1现态(S)次态/输出(S/Y)现态(S)次态/输出( S/Y)A=0 A=1 A=0 A=1a a/0 b/0 c d/1 c/0b a/0 c/0 d a/0 b/0 (2)状态化简观察表1现态栏中a和d两行可以看出,当A=0和A=1时,分别具有相同的次态a、b及相同的输出0,因此,a和d是等价状态,可以合并。
序列检测器设计实践报告
![序列检测器设计实践报告](https://img.taocdn.com/s3/m/7ee0a4c1d1d233d4b14e852458fb770bf78a3bec.png)
序列检测器设计实践报告一、引言序列检测器是现代通信系统中的关键组件之一,它能够检测出接收到的数据序列是否符合特定规则或模式。
在本次实践中,我们通过使用Verilog HDL 语言和ModelSim 软件,成功设计了一个基于有限状态机的序列检测器。
本报告将详细介绍设计实践的目标、设计思路、实现过程以及结果与分析。
二、设计目标本次实践的设计目标是设计一个序列检测器,其输入为一串二进制数据序列,输出为判断该数据序列是否符合预定的模式。
具体要求如下:1. 输入数据序列长度为N。
2. 设计的状态机模型能够正确判断数据序列是否匹配给定的模式。
3. 能够根据实际需要,设计一个可重用的序列检测器。
三、设计思路为了实现序列检测器,我们采用了有限状态机(Finite State Machine)的设计方法。
基于有限状态机的序列检测器通常包含以下几个关键部分:1. 状态寄存器(State Register):用于保存当前状态的寄存器。
2. 状态转移逻辑(State Transition Logic):用于根据当前状态和输入决定下一状态。
3. 输出逻辑(Output Logic):用于根据当前状态和输入决定输出。
在本次实践中,我们根据识别特定序列的要求设计了一个有限状态机模型。
具体步骤如下:1. 根据给定的数据序列模式,分析出可能的状态数以及状态转移条件。
2. 基于状态数和状态转移条件,设计状态转移表和状态转移条件的真值表。
3. 使用Verilog HDL语言,将状态寄存器、状态转移逻辑和输出逻辑实现为模块。
4. 将各个模块组合在一起,以实现完整的序列检测器。
四、实现过程1. 建立状态转移表和真值表根据给定的数据序列模式,我们设定了以下状态:- `S0`:初始状态;- `S1`:序列开始状态;- `S2`:序列匹配状态;- `S3`:序列不匹配状态。
根据分析,我们得到以下状态转移表和状态转移条件的真值表:状态/输入0 1S0 S1 S0S1 S2 S0S2 S2 S3S3 S1 S0状态/输入输出-S2 1S3 02. 实现Verilog HDL模块我们根据状态转移表和真值表,用Verilog HDL语言实现了状态寄存器、状态转移逻辑和输出逻辑。
序列检测器实验报告
![序列检测器实验报告](https://img.taocdn.com/s3/m/99e7b68583d049649b6658f3.png)
实验七序列检测器实验一、实验目的1、掌握序列检测器的工作原理;2、掌握时序电路的经典设计方法;3、学习AHDL 语言的状态机的设计方法;二、原理代码序列检测器是一种同步时序电路,它用于搜索,检测输入的二进制代码串中是否出现指定的代码序列,001 序列检测器的原理图如下:三、实验内容设计一个 1110010 序列检测器,即检测器连续收到一组串行码“1110010”后,输出检测标志1,否则输出0。
要求用图形输入法完成:①作状态图和状态表;②状态化简,建立最简状态表;③写出状态编码;画出状态编码表;④建立激励函数,输出函数真值表;⑤写出激励函数和输出函数表达式;⑥画出逻辑电路测试图;⑦逻辑功能仿真,记录仿真波形并加以说明;⑧下载验证(两种以上的方式)根据实验要求,得到实验所需要的是八个状态,包括初始状态。
根据实验要求检现态S 次态/输出 S/QD=0 D=1初始状态 S0 S0 /0 S1/0接收到1 S1 S0 /0 S2/0接收到11 S2 S0 /0 S3/0接收到111 S3 S4 /0 S3/0接收到1110 S4 S5 /0 S0/0接收到11100 S5 S0 /0 S6/0接收到111001 S6 S7 /1 S2/0接收到1110010 S7 S0 /0 S1/0确定各种不同状态的的表示并且做出状态表根据所得到的状态表写出真值表达式D0*=D0D2’X’+D0D1’D2+D0’D1D2X’D1*=D0D1D2+D1D2’X+XD0’D1+D0’D2X+D1’D2X00 01 11 1000 101 1 111 1 110 1D2*= D0D2’X’+D0’D2’X+XD0’D1+D1D2X根据得到的函数方程,画出电路图如下得到序列波形图输出一个时钟信号以方便下载的时候能够比较方便的对输入的序列进行调试手动调整输入的序列已达到要求,方便检测。
同时在始终是下跳沿的是后调整输入,这样的话不会出现不能及时的出现z为1时的值Sel为q[2..0]的输出,通过它的值来选择7个输入的值的有效性,并确定result的值,使清零端有(无)效,以此来得到最后的输出为一还是为0实验心得:这次的实验收获颇多,一直没有自己用D触发器设计过元件,但是这次自己设计了一个,虽然在刚刚开始的时候听了同学的讲解,但是最终自己是弄懂了,并会连接和设计,在实验过程中,由于连线很复杂,容易将线结在一起,所以在连线时要尽量的化简,务必使线少一点,整个图清晰明了,然后检验时也会少去许多不必要的麻烦在对整个设计的进行状态分析时,要选择好做需要的状态过程,并且分析,不然在最后得方程画图时,会出现不了期望的结果。
序列检测器 实验报告
![序列检测器 实验报告](https://img.taocdn.com/s3/m/aac586c6b8d528ea81c758f5f61fb7360b4c2b81.png)
序列检测器实验报告序列检测器是一种常见的信号处理技术,广泛应用于通信、雷达、生物医学和金融等领域。
本文将介绍序列检测器的原理、实验设计和实验结果,并对其应用进行讨论。
一、序列检测器的原理序列检测器是一种用于检测和识别输入信号序列的设备或算法。
它通过对输入信号进行观测和分析,判断信号是否符合特定的模式或规律。
常见的序列检测器包括有限状态机、卷积神经网络和隐马尔可夫模型等。
有限状态机是一种基本的序列检测器,它由一组状态和状态之间的转移规则组成。
在每个时刻,输入信号会触发状态之间的转移,最终达到一个终止状态。
通过定义状态和转移规则,可以实现对输入信号序列的检测和识别。
二、实验设计本实验旨在设计并实现一个简单的序列检测器,用于检测二进制信号序列中是否存在特定的模式。
实验使用MATLAB软件进行仿真,并基于有限状态机的原理进行设计。
1. 实验步骤(1)定义有限状态机的状态和转移规则;(2)生成一组随机的二进制信号序列作为输入;(3)根据状态和转移规则,对输入信号进行观测和分析;(4)判断输入信号是否符合特定的模式,并输出检测结果。
2. 实验参数为了简化实验设计,我们假设输入信号序列中的模式为"110"。
具体的状态和转移规则如下:(1)初始状态为S0;(2)当输入为"1"时,状态转移为S1;(3)当输入为"0"时,状态转移为S0;(4)当当前状态为S1且输入为"0"时,状态转移为S2;(5)当当前状态为S2且输入为"1"时,状态转移为S3;(6)当当前状态为S3且输入为"0"时,状态转移为S0。
三、实验结果经过实验设计和仿真,我们得到了以下实验结果:1. 输入信号序列:1011010110112. 检测结果:存在模式"110"通过对输入信号序列进行观测和分析,我们成功地检测到了模式"110"的存在。
序列检测器实验报告
![序列检测器实验报告](https://img.taocdn.com/s3/m/169b866af011f18583d049649b6648d7c1c7082e.png)
#### 实验目的1. 理解序列检测器的工作原理;2. 掌握时序电路的经典设计方法;3. 学习使用Verilog HDL语言进行状态机的设计;4. 验证序列检测器在实际电路中的性能。
#### 实验原理序列检测器是一种同步时序电路,用于检测特定的串行码序列。
它能够识别并响应特定长度的二进制序列,一旦检测到匹配序列,就会产生一个输出信号。
序列检测器在数字通信、数据存储和信号处理等领域有着广泛的应用。
#### 实验器材1. PC机一台;2. FPGA开发板;3. 下载电缆一根;4. 信号发生器;5. 示波器;6. 连接线若干。
#### 实验步骤1. 设计序列检测器:使用Verilog HDL语言设计一个序列检测器,该检测器能够检测到特定的序列,如“101”。
2. 实现状态机:将序列检测器设计为一个状态机,通过定义状态和状态转移图来实现序列检测功能。
3. 代码编写与仿真:在FPGA开发板上编写Verilog代码,并使用仿真软件进行功能验证。
4. 硬件实现:将Verilog代码下载到FPGA开发板上,通过信号发生器生成测试序列,并使用示波器观察输出信号。
5. 性能测试:测试序列检测器在实际电路中的性能,包括检测速度、误检率等。
#### 实验内容1. 状态机设计:根据序列检测器的要求,设计状态转移图,并定义状态编码。
2. Verilog代码编写:使用Verilog HDL语言编写序列检测器的代码,包括模块定义、信号定义、状态定义、状态转移和输出逻辑等。
3. 仿真验证:使用仿真软件对Verilog代码进行功能验证,确保序列检测器能够正确地检测到指定序列。
4. 硬件下载与测试:将Verilog代码下载到FPGA开发板上,生成测试序列,并使用示波器观察输出信号,验证序列检测器的实际性能。
#### 实验结果与分析1. 仿真结果:在仿真软件中,序列检测器能够正确地检测到指定序列“101”,输出信号符合预期。
2. 硬件测试结果:在FPGA开发板上,序列检测器能够正确地检测到指定序列“101”,输出信号与仿真结果一致。
序列检测器的设计实验报告
![序列检测器的设计实验报告](https://img.taocdn.com/s3/m/8a0622655627a5e9856a561252d380eb629423f5.png)
序列检测器的设计实验报告一、实验目的本次实验的目的是设计一个能够检测特定序列的数字逻辑电路,即序列检测器。
通过设计和实现这个电路,深入理解数字电路的基本原理和设计方法,掌握状态机的概念和应用,提高逻辑分析和电路设计的能力。
二、实验原理序列检测器是一种能够在输入数据流中检测特定序列的电路。
它通常由状态机实现,状态机根据输入的变化在不同的状态之间转移,并在特定的状态下输出检测结果。
以检测序列“1011”为例,我们可以定义以下几个状态:状态 S0:初始状态,等待输入。
状态 S1:接收到“1”,等待下一个输入。
状态 S2:接收到“10”,等待下一个输入。
状态 S3:接收到“101”,等待下一个输入。
状态 S4:接收到“1011”,输出检测成功信号。
根据状态转移和输出的规则,可以画出状态转移图,并根据状态转移图设计相应的逻辑电路。
三、实验设备与器材1、数字电路实验箱2、逻辑门芯片(如与门、或门、非门等)3、示波器4、电源四、实验步骤1、分析设计要求,确定状态转移和输出规则,画出状态转移图。
2、根据状态转移图,列出状态转换表,确定每个状态下的输入和输出。
3、使用卡诺图或其他逻辑化简方法,对状态转换表进行化简,得到最简的逻辑表达式。
4、根据逻辑表达式,选择合适的逻辑门芯片,在实验箱上搭建电路。
5、连接电源和示波器,对电路进行测试。
输入不同的序列,观察输出是否符合预期。
五、实验电路设计以下是检测序列“1011”的逻辑电路设计:状态变量定义:设当前状态为 Q1Q0,其中 Q1 为高位,Q0 为低位。
状态转移方程:Q1(n+1) = Q1Q0 + XQ1' (其中 X 为输入)Q0(n+1) = XQ0' + Q1Q0输出方程:Y = Q1Q0X根据上述方程,使用与门、或门和非门搭建电路。
六、实验结果与分析在实验中,输入了不同的序列,包括“1011”以及其他随机序列。
通过示波器观察输出,当输入序列为“1011”时,输出为高电平,表示检测成功;当输入其他序列时,输出为低电平,表示未检测到目标序列。
1101序列检测器
![1101序列检测器](https://img.taocdn.com/s3/m/59cbb6778f9951e79b89680203d8ce2f006665e8.png)
output date_out;
reg[2:0] state;
parameter st0 = 3'b000 , st1 = 3'b001,st2 = 3'b010,st3 = 3'b011,st4 = 3'b100;
always@(negedgeclk or posedge reset)begin
if(reset == 1)
state <= st0;
end
always@(negedgeclk)begin
case(state)
st0:state<=date_in?st1:st0;
st1:state<=date_in?st2:st0;
st2:state<=date_in?st2:st3;
st3:state<=date_in?st4:st0;
'timescale 1ns/100ps
module selec_td1;
reg clk1,reset1,datein;
wire dateout;
mealy1101 u1(.clk(clk1),.reset(reset1),.date_in(datein),.date_out(dateout));
initial begin
st3: state <= date_in?st1:st0;
// st4: state <= date_in?st2:st0;
endcase
eБайду номын сангаасd
assign date_out = (date_in& state[0] & state[1]);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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; //定义中间变量
always@(posedge CP) //采用边沿触发
if(CR==0)Q<=D; //将D值赋给Q
else Q<=Q; //Q保持不变
endmodule
4.实验步骤
1)打开Quartus软件,选择“File=>New Project Wizard”,在弹出的窗口中输入项目的名称
和存储位置。
2)单击两次Next后,选择实验板的具体型号,本次使用EP3C16F484C6。
3)继续单击Next,确认信息无误后,单击Finish完成项目的创建。
将文件保存在与项目文件同样的位置即可。
5)选择“Processing=》Start Compilation”开始编译,编译通过后可以查看生成的Report。
6)新建“Vector Waveform File”,并导入所有引脚。
7设置仿真类型为功能仿真。
导入网络表。
进行功能仿真。
仿真效果如下:
8)打开modelsim,创建工程
9)写入程序源代码:
10)创建用于书写测试波形的源文件
11)添加文件并编译
12)创建仿真设定
13)添加测试端口并开始测试
14)选择“assignment=》pins”进行引脚设置,设置如下:
15)再次进行编译。
16)将程序下载到DEO实验板进行测试。
5.实验结果的测试和分析
将程序下载到DE0实验板上进行测试:
将开关置1,时钟信号灯闪烁两次后将开关置0,可以看到输出对应的LED灯点亮,而后熄灭,说明改程序能过检测110序列。
6.实验总结
通过这个实验我学会了序列检测器的设计,学会了modelsim的使用,掌握了Verilog HDL语言编程的基本语法以及Quartus软件的一些常用操作,熟悉了与DEO实验板相关的一系列实验流程。
7.参考文献
[1] 罗杰. Verilog HDL与数字ASIC设计基础武汉:华中科技大学出版社,2008.
[2]康华光. 电子技术基础(数字部分)[数字部分][M]. 5版. 北京:高等教育出版社,2006.。