实验四8序列检测器的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四序列检测器的设计
一、实验目的
1)了解序列检测器的工作原理
2)熟悉MAX+plusII软件的基本使用方法
3)熟悉EDA实验开发的基本使用方法
4)学习VHDL程序中数据对象,数据类型,顺序语句,并行语句的综合使用
二、实验内容
设计一个序列检测器,当序列检测器连续收到一组串行的二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同,在检测过程中,任何一位不相等都将回到初始状态重新开始检测。
三、实验条件
开发软件:MAX+plus II 9.23 Baseline
硬件设备:装有windows7的pc机
四、实验设计
1)系统的原理框架图
2)VHDL源程序
chk.vhd源代码
library ieee;
use ieee.std_logic_1164.all;
entity chk is
port(din: in std_logic;
clk,clr:in std_logic;
d:in std_logic_vector(7 downto 0);
ab:out std_logic_vector(3 downto 0));
end entity chk;
architecture art of chk is
signal q:integer range 0 to 8;
begin
process(clk,clr)is
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)is
begin
if q=8 then ab<="1010";
else ab<="1011";
end if;
end process;
end architecture;
3)管脚图
五、实验结果及总结
系统时序仿真结果
从系统仿真结果可以看出,本系统完全符合设计要求,同时从仿真结果可以看出,从输入到输出有一定的延时,在14ns左右,这正是器件延时特征的反映。
实验过程出现的问题几解决方法:
感觉实验比起前面的8位乘法器简单多了,除了以前遇到的问题基本上没什么其他的问题。