- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于verilog序列检测器设计
基于verilog序列检测器设计
摘 要:随着科技的飞速发展,传统的电子技术逐渐被现代电子技术取代,以FPGA/CPLD为硬件,以verilog语言为软件的EDA技术应用越来越广泛,本文旨在以一个具体的序列检测器的设计为例,将以硬件描述语言来设计芯片的流程呈现给大家。
关键词:verilog;序列检测器;状态;EDA
中图分类号:TP273 文献标识码:A
1 引言(Introduction)
在数字信号的传输和数字系统产品的设计和测试过程中,往往需要用到一组特定的串行数字信号,我们把产生序列信号的模块电路称作序列信号发生器,如要求产生一串序列为例来给大家展示EDA设计有限状态机的过程[1]。本电路由计数器与数据选择器两部分构成,结构框图如图1所示,该锁存输出的功能是为了消除电路产生的毛刺。
图1 结构框图
Fig.1 Structure diagram
2 序列检测器的基本工作过程(The basic working
process serial detector)
有限状态机一般用来检测一组或多组由二进制码组成的脉冲序列信号,广泛应用于在数字系统中。当该特定序列检测器连续接收到一组二进制码,如果这组二进制码与检测器中预先设置的码能匹配成功,就输出1,否则输出0。因为该检测的关键在必须连续接受正确码,中间只要出错以为,就必须重新进行检测,所以要求该检测器记住前一次的正确码及正确序列,直到在连续的检测中所有的串行二进制码都能连续匹配成功。检测二进制码中,只要有任何一位没匹配成功都回到初始状态重新开始匹配[2]。方框图如图2所示。
图2 状态流程图
Fig.2 State flow diagram
3 状态机的基本设计思想(The basic design idea of
state machine)
在数字系统中,当状态连续变化,我们可以采用状态机的设计思想来提高设计效率,还可以增加程序的可读性,从而降低错误的概率。而有限状态机的设计思路也是数字系统中一种常用的设计方法之一。通常情况,有限的标准状态机分为以下两种,摩尔机和米立机。两者不同在于,摩尔机中,它输出只是当前状态值的函数,而且只在时钟上跳沿时发生作用。而米立机的输出是当前输入值、当前输出值、当前状态值三者共同的函数。本例从一串二进制数码中检测出一个已预置的8位二进制码,每当增加一位二进制码相当于增加一个状态,连同初始态,总共需要用9个状态来实现[3]。状态转换过程如图3所示。
图3 状态转换图
Fig.3 State transition diagram
注意:此图仅作为参考,检测不同的二进制码其过程不同!
4 设计过程(Design process)
4.1 硬件设备连接
(1)将EDA适配板JTAG接口用十芯排线和万用下载区的SOPC JTAG口连接起来,万用下载区的电源开关选择到SOPC下载的一边。
(2)将开发板上按要求设置好相关跳线。
(3)对EDA开发板供电。
4.2 软件实现
(1)打开Quartus II软件,由于在计算机软硬件领域,一般的设计都是一项工程(Project),因此需要为工程建立一个放置此工程相关文件的文件夹,该文件夹作为EDA工程的工作目录。创建一个工程,命名并保存到上述文件夹中。
(2)新建一个verilog代码文件,主要模块代码如下:
always @ (posedge clk4 or posedge rst)
if (rst) begin key1_dff1=1b0;key1_dff2= 1b0;
key2_dff1=1b0; key2_dff2=1b0;end else begin
key1_dff1=key1; key1_dff2=key1_dff1;
key2_dff1=key2; key2_dff2=key2_dff1;end
assign value_0=key1_dff1 !key1_dff2;//serial value is 0;
assign value_1=key2_dff1 !key2_dff2;//serial value is 1;
(3)将设计文件加入工程。
(4)选择目标芯片。
(5)选择配置器件的工作方式。
(6)选择配置器件和编程方式。
(7)选择输出设置。
(8)选择目标芯片的闲置引脚的状态。
(9)编译。
(10)仿真。
(11)应用RTL电路图观察器。
(12)引脚锁定。
引脚分配如下:
文档评论(0)