基于fpga的序列检测器的设计(编辑修改稿)内容摘要:

结构的优势。 Compiler的 Fitter(试配 )模块可 以经过综合的设计恰当地用一个或多个器件实现,这种自动试配功能使设计者得以从冗余的布局与布线工作中解脱出来。 Fitter生成报告文件 (.Rp), 可以 展示设计的具体实现以及器件中未使用的资源。 设计的仿真 电路设计输入完以后,首先需要检验输入是否正确,这是一项简单的逻辑检查, QUARTUS II 提供功能编译的选项。 此时,只运行仿真网络表的提取,而不作布局布线,所以,此时的仿真没有延时信息,所有的延时均为零延时,而且可以预测所有的信号,对于初步的功能检测非常方便。 在仿真时需加入激励信号,该激励信号可以 用 QUARTUS II 软件中的波形编译器直接编译成波形文件,还可以先用文本编辑器按软件给定的语法规则编译成文本文件,再转换成波形文件,也可以二者结合进行。 常用的方法是对于时钟或简单的波形信号用波形编辑器输入,而较复杂的信号则用文本编译器生成。 仿真时需事先在波形文件中加入想要观测的信号名,信号名可通过菜单中的节点列表选择,此时,所有的节点的信号都是可以观测的。 如果检查到错误,则需要重新输入,重复这个过程。 南昌航空大学学士学位论文 12 功能检查完成后,首先需要进行编译,这时应选择带延时的完全的编译过程。 对每一个设计项目,都有一个配置文 件 ACF,所有的配置参数都存在这个文件里。 如果需要修改配置,既可在菜单上作选择,也可以直接修改次文件。 主要的配 置参数包括器件 类型、管脚的设置、速率及面积的比重、时间参数的要求、布线时的设置等。 编译完成以后,可得到报告文件、延时文件、可仿真网络表文件及配置文件,利用功能仿真时生成的激励波形可进行仿真。 如果要想下次的布线结果在本次基础上进行,则可以利用反主标的方法,把配置结果写入 ACF文件中,下次编译只需用此 AFC文件即可。 编译完成以后,还可以利用布局软件 FloorPlan直接调整内部布局,这种方法对于时间关系 的调整非常有用。 QUARTUS II 的仿真器具有很强的灵活性,可以控制对单器件或多器件设计的仿真。 仿真器使用编译期间生成的二进制仿真网络表进行功能、定时的仿真,或把组合连接起来的多个器件作为一个设计进行仿真。 可以使用简明的向量输入语言定义输入激励,也可以使用 QUARTUS II 的波形编辑程序直接画出波形。 仿真结果可以在波形编辑器或文件编辑器中看到,也可以作为波形文件或文本文件打印出来。 为便于比较设计者可以使用波形编辑器把两次仿真的结果重叠起来。 4 序列检测器 电路 的设计 序列 检测 器 电路 总体 结构 设计 序列检测器 总体 主要 由 脉 冲序列发生器 电路 、 脉冲 序列信号检测器 电路、十 六进制计数器 电路 、计数显示 电路 、时钟分频 电路 、串并转换电路、奇偶校验电路 组成,其中脉冲序列发生器电路 的功能是 生成串行的序列 供脉冲序列信号 检测器从中检测待检测的数据,脉冲序列信号检测器 检测输入的序列中有没有待检测的序列,十六进制计数器 计数序列检测器检测到特定序列的次数并以四位二进制进行输出, 计数显示电路是把检测到的次数 通过七段译码器 显示 出来,时钟分频电路是 将外部晶振 时钟进行分频提供给 需要时钟的各个电路 , 串并转换电路是将经过检测的串行序 列转换成并行输出 奇偶校验电路 进行奇偶校验。 总体电路设计框图图 所示: 南昌航空大学学士学位论文 13 设计框图 8 路脉冲 序列发生器 电路 设计 及仿真 8路 序列发生器 [20]是指在同步脉冲作用下循环地产生 8路的 一串周期性的二进制信号 ,本电路 设计 实现产生 8 路 64 位的二进制序列。 表 各路脉冲序列发生器发出的序列。 路序 产生序列 ① 1110011000110010100001111000110011001100111001100011001010000111 ② 1111011000110010100001111100110011000100111001100011001010000111 ③ 1110011010110010100000111000110011001100101001100011001010000101 ④ 1111111101000010111111110011001011111111001100011001010000111000 ⑤ 1110011011010011100001111101101111001100111001100011001010000111 ⑥ 0000000010100101000000001100001100000000101100010000000010011111 ⑦ 1110011000110010100001110011001111001100111001100011101010000111 ⑧ 0001110001100110001110010101010101010100101100110110111101010101 表 各路脉冲序列发生器 产 生 的 序列 其顶层文件 VHDL 代码如下: library IEEE。 use。 use。 entity xlfsq is port(clk:in std_logic。 clr:in std_logic。 dout1,dout2,dout3,dout4,dout5,dout6,dout7,dout8:out std_logic)。 8 路 检测 器 8 路脉冲序列发生器 8 路 十 六 进 制 计 数 器 计数显示器 外部晶振 分频器 串并转 换 奇 偶校 验 南昌航空大学学士学位论文 14 end。 architecture one of xlfsq is ponent xlfsq1 port(clk:in std_logic。 clr:in std_logic。 dout:out std_logic)。 end ponent。 ponent xlfsq2 port(clk:in std_logic。 clr:in std_logic。 dout:out std_logic)。 end ponent。 ponent xlfsq3 port(clk:in std_logic。 clr:in std_logic。 dout:out std_logic)。 end ponent。 ponent xlfsq4 port(clk:in std_logic。 clr:in std_logic。 dout:out std_logic)。 end ponent。 ponent xlfsq5 port(clk:in std_logic。 clr:in std_logic。 dout:out std_logic)。 end ponent。 ponent xlfsq6 port(clk:in std_logic。 clr:in std_logic。 dout:out std_logic)。 南昌航空大学学士学位论文 15 end ponent。 ponent xlfsq7 port(clk:in std_logic。 clr:in std_logic。 dout:out std_logic)。 end ponent。 ponent xlfsq8 port(clk:in std_logic。 clr:in std_logic。 dout:out std_logic)。 end ponent。 begin u1: xlfsq1 port map(clk=clk,clr=clr,dout=dout1)。 u2: xlfsq2 port map(clk=clk,clr=clr,dout=dout2)。 u3: xlfsq3 port map(clk=clk,clr=clr,dout=dout3)。 u4: xlfsq4 port map(clk=clk,clr=clr,dout=dout4)。 u5: xlfsq5 port map(clk=clk,clr=clr,dout=dout5)。 u6: xlfsq6 port map(clk=clk,clr=clr,dout=dout6)。 u7: xlfsq7 port map(clk=clk,clr=clr,dout=dout7)。 u8: xlfsq8 port map(clk=clk,clr=clr,dout=dout8)。 end。 其 中 第一 路 的 VHDL 设计代码如下: library IEEE。 use。 use。 entity xljc is port(clk:in std_logic。 clr:in std_logic。 dout:out std_logic)。 end。 architecture one of xljc is signal reg:std_logic_vector(63 downto 0)。 begin 南昌航空大学学士学位论文 16 process (clk,clr) begin if clk39。 event and clk=39。 139。 then if clr=39。 139。 then dout=39。 039。 reg=1110011000110010100001111000110011001100111001100011001010000111。 else dout=reg(63)。 reg=reg(62 downto 0)amp。 reg(63)。 end if。 end if。 end process。 end。 建立仿真波形文件,其仿真波形如图 所示 : 第 一路 序列发生器电路仿真波形 仿真结果分析:从仿真波形看出当清零端 clr 为零时,序列发生器连续输出串行 序列 :1110011000110010100001111000110011001100111001100011001010000111,实现了该模块的设计功能。 其 RTL 图如 图 : 图 序列发生器 RTL图 南昌航空大学学士学位论文 17 8 路 检测器 电路 设计 及仿真 序列检测器 可用 于检测一组或多组二进制码组成的脉冲序列信号,当序列检测器连续接收到一组 串 行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出 0。 由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确的序列,直到连续的检测中所收到的每一位码都与预置数的对应码相同。 在检测过程中,任何一位不相等将回到初始状态重新开始检测。 表 是各 路检测器电路 待检测的序列。 路序 待检测序列 ① 11100101 ② 11100110 ③ 10000101 ④ 11111111 ⑤ 11011011 ⑥ 00000000 ⑦ 00110010 ⑧ 10110011 表 各路检测器待检测序列 8 路脉冲序列检测器的顶层 VHDL 代码如下: library ieee。 use。 entity xljcq is port(din1,din2,din3,din4,din5,din6,din7,din8,clk: in std_logic。 dout1,outy1,dout2,outy2,dout3,outy3,dout4,outy4,dout5,outy5,dout6,outy6,dout7,outy7,dout8,outy8: out std_logic)。 end xljcq。 architecture behav of xljcq is ponent xljcq1 port(din,clk: in std_logic。 dout,outy : out std_logic)。 end ponent。 ponent xljcq2 南昌航空大学学士学位论文 18 port(din,clk: in std_logic。 dout,outy : out std_logic)。 end ponent。 ponent xljcq3 port(din,clk: in std_logic。 dout,outy : out std_logic)。 end ponent。 ponent xljcq4 port(din,clk: in std_logic。 dout,o。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。