位序列检测器的设计_第1页
位序列检测器的设计_第2页
位序列检测器的设计_第3页
位序列检测器的设计_第4页
位序列检测器的设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、八位序列检测器设计 摘 要:序列检测器多用于通信系统中对禁用码的检测,或者是对所需信号的提取,即一旦检测到所需信号就输出高电平,这在数字通信领域有广泛的应运。本文介绍了一种采用单片PGA 芯片进行脉冲序列检测器的设计方法,主要阐述如何使用新兴的 EDA 器件取代传统的电子设计方法,利用 FPGA 的可编程性,简洁而又多变的设计方法,缩短了研发周期,同时使设计的电路体积更小功能更强大。 本次课程设计设计出能够检测序列 “11010011”的序列检测器,并以此来描述序列检测器的设计过程和基于 FPGA 的软件仿真。最后通过QuartusII 的波形输出对设计方案进行检测,在硬件调试经检测输出正确设

2、计符合要求。 关键词: VHDL 序列检测 Quartus FPGA Abstract:Sequence detector system used for communication on the detection code disabled, or is the extraction of the desired signal, that is, once detected, the required high output signal, which in the broad field of digital communications to be transported. This

3、paper presents a single FPGA chip with the detector pulse sequence design method, mainly on how to us e new device to replace the traditional EDA electronic design, the use of FPGA's programmability, concise and changing the design method shortens the development cycle, while allowing smaller ci

4、rcuit design and more powerful. The curriculum is designed to detect sequence "11010011" sequence detectors, and detector in order to describe the sequence of the design process and FPGA- based software simulation. Finally, the output of the waveform QuartusII design testing, debugging the

5、 hardware design has been tested and meet the requirements of the correct output. Keywords: VHDL Sequence detection Quartus FPGA 目 录1前言11.1 课题设计背景12. 总体方案设计22.1 方案比较22.2 两种方案的论证与比较33. 单元模块设计43.1 序列信号发生器43.2序列检测器63.3计数器73.4 顶层文件设计84 系统调试与验证94.1待测序列的输入94.2 时序仿真114.3结果分析125 总结与体会136 辞谢147 参考文献151前言1.1

6、课题设计背景 随着数字通信的广泛应用,可编程逻辑器件容量、功能的不断扩大,集成电路的设计已经进入片上系统(SOC)和专用集成电路(ASIC)的时代。由于硬件描述语言VHDL可读性、可移植性、支持对大规模设计的分解和对已有设计的再利用等强大功能,迅速出现在各种电子设计自动化(EDA)系统中,先进的开发工具使整个系统设计调试周期大大地缩短。利用硬件描述语言(如VHDL)来完成对系统硬件功能的描述,在EDA工具的帮助下通过波形仿真得到时序波形,这样就使得对硬件的设计和修改过程软件化,提高了大规模系统设计的自动化程度。传统的脉冲序列检测器,它的实现方法是把一个算法转化为一个实际数字逻辑电路的过程。在这

7、个过程中,我们所得到的结果大概一致,但是在具体设计方法和性价比上存在着一定的差异,存在电路设计复杂,体积大,抗干扰能力差以及设计困难、设计周期长等缺点。而利用FPGA作为硬件电路,采用VHDL等硬件描述语言对硬件的功能进行编程,加快了系统的研发进程,采用数字化的控制方式,大幅度提高了逻辑控制的精确度,实时控制效果好,实践证明,FPGA芯片可以代替传统的复杂的电路,而且可以大比例地缩小了电路的硬件规模,提高了集成度,降低开发成本,提高系统的可靠性,为脉冲序列检测器电路的设计开辟了新的天地。脉冲序列检测器在现代数字通信系统中发挥着重要的作用,通过中小规模的数字集成电路构成的传统脉冲序列检测器电路往

8、往存在电路设计复杂体积大、抗干扰能力差以及设计困难、设计周期长等缺点。因此脉冲序列检测器电路的模块化、集成化已成为发展趋势,它不仅可以使系统体积减小、重量减轻且功耗降低、同时可使系统的可靠性大大提高。随着电子技术的发展,特别是专用集成电路(ASIC)设计技术的日趋完善,数字化的电子自动化设计(EDA)工具给电子设计带来了巨大变革,尤其是硬件描述语言的出现,解决了传统电路原理图设计系统工程的诸多不便。随着ASIC技术、EDA技术的不断完善和发展以及VHDL、HDL等通用性好、移植性强的硬件描述语言的普及,FPGA等可编程逻辑器件必将在现代数字应用系统中得到广泛的应用,发挥越来越重要的作用。 2.

9、 总体方案设计通过查阅大量相关技术资料,并结合自己的实际知识,我们主要提出了两种技术方案来实现系统功能。下面我将首先对这两种方案的组成框图和实现原理分别进行说明,并分析比较它们的优劣。2.1 方案比较2.1.1方案一工作原理:基于FPGA的多路脉冲序列检测器的设计方案,使用VHDL语言设计时序逻辑电路,“1”,否则输出“0”,并且将检测到的信号的显示出来。系统框图如图所示:图2.12.1.2方案二 工作原理:使用proteus软件进行仿真,先画出原始状态图和状态表,在根据状态图使用D触发器,与门,或门以及非门等元件画出时序逻辑图,再根据结果译码,最后使用LED灯显示结果。系统框图如图所示:图2

10、.22.2 两种方案的论证与比较 第一种方案使用quartus软件进行仿真和验证,直接输入源代码比较简单方便,并且还可以检测其他的序列,只需要修改一部分代码就可以实现。 方案二使用proetus软件进行仿真和验证,需要先进行复杂的状态图分析,如果需要检测的序列过长就会造成原理图连接过于复杂,不易实现。而且一旦原理图连接好久只能检测一种序列,如果要检测其他序列就要重新连图。 通过比较发现第一种方案明显优于第二种方案,因此选择第一种方案。 3. 单元模块设计主要介绍系统各单元模块的具体功能、电路结构、工作原理、以及各个单元模块之间的联接关系;同时本节也会对相关电路中的参数计算、元器件选择、以及核心

11、器件进行必要说明。3.1 序列信号发生器序列信号是指在同步脉冲作用下循环地产生一串周期性的二进制信号。利用状态机设计,首先定义一个数据类型FSM_ST它的取值为st0到st15的16个状态。REGs0s1s2s3s4s5s6s7Q10110100REGs8s9s10s11s12s13s14s15Q01101010表3.1序列信号发生器的代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHK IS PORT (CLK,RST :IN STD_LOGIC; CO :OUT STD_LOGIC );END SHK;ARCHITECTURE b

12、ehav OF SHK ISTYPE 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; BEGINPROCESS(CLK,RST)BEGINIF RST ='1' THEN REG<=s0;Q<='0' ELSIF CLK'EVENT AND CLK='1' THENCASE REG IS WHEN s0=> Q<='1' REG<=s1

13、; 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=

14、> 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;WHEN s14=> Q<='1'REG<=s15; WHEN

15、s15=> Q<='0'REG<=s0;WHEN OTHERS=>REG<=s0;Q<='0' END CASE; END IF; END PROCESS; CO<=Q; END behav;转化成可调用的元件: 图3.1波形仿真如下:图3.23.2序列检测器脉冲序列检测起可用于检测一组或多组二进制码组成的脉冲序列信号,当序列检测器连续接收到一组穿行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确的序列,直到

16、连续的检测中所收到的每一位码都与预置数的对应码相同。在检测过程中,任何一位不相等将回到初始状态重新开始检测。序列检测器的代码如下:library ieee;use ieee.std_logic_1164.all;entity SCHK1 isport(datain,clk:in std_logic;t: in std_logic_vector (4 downto 0);q:out std_logic;cq: out std_logic_vector (4 downto 0);end SCHK1;architecture rt1 of SCHK1 issignal reg:std_logic_v

17、ector(4 downto 0);beginprocess(clk)variable t1:std_logic_vector (4 downto 0);beginif clk'event and clk='1' thenreg(0)<=datain;reg(4 downto 1)<=reg(3 downto 0) ;end if;t1:=t; if reg=t1 then q<='1' ; else q<='0' cq<=reg; end if; end process;end rt1;转化成可调用的元件:

18、图3.3波形仿真如下:图3.43.3计数器利用序列检测器产生的信号(1和0)作为计数器模块的时钟信号,产生的信号0、1变化,形成类似的CLK信号,实现计数器计数。计数器的代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNT IS PORT (CLK, EN,RST :IN STD_LOGIC; Q1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);Q2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT: OUT STD_L

19、OGIC );END ENTITY COUNT;ARCHITECTURE ONE OF COUNT IS BEGINPROCESS(CLK,EN,RST) VARIABLE CQI:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF RST='1' THEN CQI:= (OTHERS=>'0'); ELSIF CLK'EVENT AND CLK='1' THEN IF EN='1' THEN IF CQI<153 THEN IF CQI(3 DOWNTO 0)=9 THEN CQI:

20、=CQI +7; -高位进位 ELSE CQI := CQI+1; END IF; ELSE CQI:= (OTHERS=>'0'); END IF; END IF; END IF; IF CQI=153 THEN COUT<='1' ELSE COUT<='0' END IF; Q1<=CQI(3 DOWNTO 0); Q2<=CQI(7 DOWNTO 4); END PROCESS COUNT; END ARCHITECTURE ONE; 转化成可调用的元件:图3.5波形仿真如下:图3.63.4 顶层文件设计通过

21、前面的准备,我们已经得到了全部所需要的3个模块,即序列信号发生器、序列检测器、计数器。在此,我们运用原理图法来生成顶层实体。具体的实现方法是,将上述3个模块,通过我们的设计软件,生成可以移植,调用的原理图文件,在将其在顶层设计中直接调用即可。本次设计生成的顶层实体如下图所示:图3.7 4 系统调试与验证4.1待测序列的输入输入检测的8位序列“11001011”程序如下:library ieee;use ieee.std_logic_1164.all;entity SCHK1 isport(din,clk,clr : in std_logic; pre_load : in std_logic_v

22、ector(7 downto 0); ab: out std_logic_vector(3 downto 0);end SCHK1;architecture behav of SCHK1 issignal q : integer range 0 to 8;signal d : std_logic_vector(7 downto 0);beginD<=pre_load;-置入待检测序列process (clk, clr)beginif clr='1' then q <= 0;elsif clk'event and clk='1' then ca

23、se q iswhen 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=&

24、gt; 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)beginif q=8 then ab<=1;else ab<=0;end if;end process;end behav;转化

25、成可调用的元件: 图4.14.2 时序仿真置入待检测序列:图4.2仿真结果:图4.34.3结果分析:1. 根据序列检测器的输出端q可以看出,当检测器检测到串行信号与预置的序列信号相同时,q则输出“A”,没有检测到,q则输出“B”;2. 根据计数器的输出端Q1可以看出,Q1将序列检测器检测到的序列信号的数目显示出来。3.通过仿真结果还可以看到,输出的波形出现了一些毛刺,这是因为信号在FPGA器件中通过逻辑单元连线时,一定存在延时。延时的大小不仅和连线的长短和逻辑单元的数目有关,而且也和器件的制造工艺、工作环境等有关。因此,信号在器件中传输的时候,所需要的时间是不能精确估计的,当多路信号同时发生跳变的瞬间,就产生了“竞争冒险”。这时,往往会出现一些不正确的尖峰信号,这些尖峰信号就是“毛刺”。5 总结与体会经过这次课程设计的学习,我确实学习了很多知识,真正的感受到了理论联系实际的重要性,以及这之间莫大区别,到最后看着自己的结果心里还是感到很欣慰的。具体做了以下几项工作:1.查找相关资料,了解EDA技术的发展及优点,同时详细分析了利用可编程逻辑器件来设计脉冲序列检测器的优势。2. 简要分析了FPJA器件的特征和结构,详细介绍了FPGA设计流程,同时详细介绍了硬件描述语言VHDL及其特点。3. 对序列检测器原理进行了详细的了解,并详细介绍了序列信号发生器、序列检测器及计

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论