




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
分频程序虽然简单,但我觉得由简入难是学习的一个必然阶段,慢慢的我们自然会成长起来。所以如果有时间的话,大家都可以将自己的这种“小程序”贴到论坛上来。如果你的程序好,其他人也可以学习;如果你的程序有问题,大家可以一起帮你找问题,共同进步。还有,我觉得在发贴的时候,最好能将原理说一下。一来大家看你的贴能学到东西;二来也方便解答你的问题,不然还得解答者自己去找资料搞懂原理,然后再回答你,回答你问题的人自然也就不多了。说了一些题外话,下面转入正文在VERILOG程序设计中,我们往往要对一个频率进行任意分频,而且占空比也有一定的要求这样的话,对于程序有一定的要求,现在我在前人经验的基础上做一个简单的总结,实现对一个频率的任意占空比的任意分频。比如我们FPGA系统时钟是50MHZ,而我们要产生的频率是880HZ,那么,我们需要对系统时钟进行分频。我们很容易想到用计数的方式来分频50000000/88056818这个数字不是2的整幂次方,那么怎么办呢我们可以设定一个参数,让它到56818的时候重新计数不就完了吗呵呵,程序如下MODULEDIVCLK,CLK_DIVINPUTCLKOUTPUTCLK_DIVREG150COUNTERALWAYSPOSEDGECLKIFCOUNTER56817COUNTER0ELSECOUNTERCOUNTER1ASSIGNCLK_DIVCOUNTER15ENDMODULE/MODULEDIVCLK,RST,CLK_DIVINPUTCLK,RSTOUTPUTREGCLK_DIVREG150COUNTERSALWAYSPOSEDGECLKIFRSTBEGINCOUNTER0CLK_DIV0ENDELSEIFCOUNTER56817BEGINCOUNTER0CLK_DIVCLK_DIVENDELSECOUNTERCOUNTER1ENDMODULE下面我们来算一下它的占空比我们清楚地知道,这个输出波形在COUNTER为0到32767的时候为低,在32767到56817的时候为高,占空比为40多一些,如果我们需要占空比为50,那么怎么办呢不用急,慢慢来。我们再设定一个参数,使它为56817的一半,使达到它的时候波形翻转,那不就完了吗呵呵,再看看MODULEDIVCLK,CLK_DIVINPUTCLKOUTPUTCLK_DIVREG140COUNTERALWAYSPOSEDGECLKIFCOUNTER28408COUNTER0ELSECOUNTERCOUNTER1REGCLK_DIVALWAYSPOSEDGECLKIFCOUNTER28408CLK_DIVCLK_DIVENDMODULE占空比是不是神奇地变成50了呢呵呵。继续让我们来看如何实现任意占空比,比如还是由50M分频产生880HZ,而分频得到的信号的占空比为30。568183017045MODULEDIVCLK,RESET,CLK_DIV,COUNTERINPUTCLK,RESETOUTPUTCLK_DIVOUTPUT150COUNTERREG150COUNTERREGCLK_DIVALWAYSPOSEDGECLKIFRESETCOUNTER0ELSEIFCOUNTER56817COUNTER0ELSECOUNTERCOUNTER1ALWAYSPOSEDGECLKIFRESETCLK_DIV0ELSEIFCOUNTER17045CLK_DIV1ELSECLK_DIV0ENDMODULE三分频的VERILOG实现/很实用也是笔试面试时常考的,已经经过仿真占空比要求50和不要求占空比差别会很大,先看一个占空比50的描述MODULEDIV3CLKIN,CLKOUT,RESETNINPUTCLKIN,RESETNOUTPUTCLKOUT/INTERNALCOUNTERSIGNALSREG10COUNT_AREG10COUNT_BREGCLKOUTALWAYSNEGEDGERESETNORPOSEDGECLKINBEGINIFRESETN1B0COUNT_A2B00ELSEIFCOUNT_A2B10COUNT_A2B00ELSECOUNT_ACOUNT_A1ENDALWAYSNEGEDGERESETNORNEGEDGECLKINBEGINIFRESETN1B0COUNT_B2B0ELSEIFCOUNT_B2B10COUNT_B2B00ELSECOUNT_BCOUNT_B1ENDALWAYSCOUNT_AORCOUNT_BORRESETNBEGINIFRESETN1B0CLKOUT1B0ELSEIFCOUNT_ACOUNT_B4|COUNT_ACOUNT_B1CLKOUTCLKOUTENDENDMODULE012012/012012下面是一个非50的描述,只用了上升沿MODULEDIV3CLKIN,CLKOUT,RESETNINPUTCLKIN,RESETNOUTPUTCLKOUTWIREDREGQ1,Q2WIRECLKOUTALWAYSNEGEDGERESETNORPOSEDGECLKINBEGINIFRESETN1B0Q11B0ELSEQ1DENDALWAYSNEGEDGERESETNORPOSEDGECLKINBEGINIFRESETN1B0Q21B0ELSEQ2Q1ENDASSIGNDQ1ASSIGNCLKOUTQ2ENDMODULE占空比不是50,只用了单沿触发器,寄存器输出。至于其他奇数要求50的或者不要求的占空比的,都可以参照上面两个例子做出。占空比为50的一个更好的实现。MODULEDIV3CLKIN,CLKOUT,RESETNINPUTCLKIN,RESETNOUTPUTCLKOUT/INTERNALCOUNTERSIGNALSREG10COUNT_AREGB,C/REGCLKOUTWIRECLKOUTALWAYSNEGEDGERESETNORPOSEDGECLKINBEGINIFRESETN1B0COUNT_A2B00ELSEIFCOUNT_A2B10COUNT_A2B00ELSECOUNT_ACOUNT_A1ENDALWAYSNEGEDGERESETNORNEGEDGECLKINBEGINIFRESETN1B0B1B0ELSEIFCOUNT_A2B01B2B0ELSEB1B1ENDALWAYSNEGEDGERESETNORPOSEDGECLKINBEGINIFRESETN1B0C1B0ELSEIFCOUNT_A2B10C1B1ELSEIFCOUNT_A2B01C1B0ENDASSIGNCLKOUTBENDMODULE时钟选择器的VERILOG写法CPRI有3种数据时钟,6144M12288M24576M,需要模块能够根据外部的速率指示信号一个2位的输入信号,由模块外部给定选择其中的一种时钟作为模块的工作时钟但由于所选用的FPGA工作频率关系,不能超过400M,无法通过寄存器方式实现时钟源的选择使用双边触发的方式将最高的频率进行分频,代码如下,已经通过MODELSIM的仿真,可以实现。MODULECLK_DIVRESET,/复位信号DATA_RATE,/数据速率指示CLK2,/24576M的时钟输入TIME1,/分频计数器CLK/选择后的时钟输出INPUTRESETINPUT10DATA_RATEINPUTCLK2OUTPUT10TIME1OUTPUTCLKREG10TIME1REGCLKALWAYSCLK2ORRESETIFRESETBEGINTIME12B00CLK1B0ENDELSEBEGINTIME1TIME11B1CASEDATA_RATE2B00IFTIME12B00CLKCLKELSECLKCLK2B01IFTIME101B1CLKCLKELSECLKCLK2B10CLKCLK2B11CLKCLKENDCASEENDENDMODULEVERILOG实现GRAY码计数器/16位GRAY码计数器,GARY码状态改变时候每次只改变一个BIT/,可以有效防止竞争和毛刺的产生。MODULEGRAY_COUNTERCLK,CLR,START,STOP,Q,COUTINPUTCLKINPUTCLRINPUTSTART,STOPOUTPUTREG30QOUTPUTREGCOUTREGFLAG1REG30S,NEXT_S/PARAMETERS00,S11,S22,S33,S44,S55,S66,S77/PARAMETERS88,S99,S1010,S1111,S1212,S1313,S1414,S1515PARAMETERS00000,S10001,S20011,S30010PARAMETERS40110,S50111,S60101,S70100PARAMETERS81100,S91101,S101111,S111110PARAMETERS121010,S131011,S141001,S151000ALWAYSPOSEDGECLKBEGINIFCLRSS0ELSESNEXT_SEND/ALWAYSPOSEDGESTARTORPOSEDGESTOPBEGINIFSTARTFLAG1ELSEIFSTOPFLAG0END/ALWAYSSORFLAG/该进程实现状态的转换/BEGINCASESS0BEGINIFFLAGNEXT_SS1/ELSENEXT_SS0ENDS1BEGINIFFLAGNEXT_SS2ENDS2BEGINIFFLAGNEXT_SS3/ELSENEXT_SS0ENDS3BEGINIFFLAGNEXT_SS4/ELSENEXT_SS3ENDS4BEGINIFFLAGNEXT_SS5ENDS5BEGINIFFLAGNEXT_SS6/ELSENEXT_SS0ENDS6BEGINIFFLAGNEXT_SS7/ELSENEXT_SS3ENDS7BEGINIFFLAGNEXT_SS8/ELSENEXT_SS0ENDS8BEGINIFFLAGNEXT_SS9ENDS9BEGINIFFLAGNEXT_SS10/ELSENEXT_SS0ENDS10BEGINIFFLAGNEXT_SS11/ELSENEXT_SS3ENDS11BEGINIFFLAGNEXT_SS12ENDS12BEGINIFFLAGNEXT_SS13/ELSENEXT_SS0ENDS13BEGINIFFLAGNEXT_SS14/ELSENEXT_SS3ENDS14BEGINIFFLAGNEXT_SS15/ELSENEXT_SS0ENDS15BEGINIFFLAGNEXT_SS0/ELSENEXT_SS3ENDDEFAULTNEXT_SS0/DEFAULT语句/ENDCASEENDALWAYSS/该进程定义组合逻辑(FSM的输出)/BEGINCASESS0Q0S1Q4S2Q2S3Q3S4Q4S5Q5S6Q6S7Q7S8Q8S9Q9S10Q10S11Q11S12Q12S13Q13S14Q14S15Q15DEFAULTQ0/DEFAULT语句,避免锁存器的产生/ENDCASEENDALWAYSSBEGINIFSS15COUT1/ASSIGNCOUTQELSECOUT0ENDENDMODULE如何解决FPGA电路设计中的毛刺问题随着半导体技术的飞速发展,FPGA(FIELDPROGRAMMABLEGATEARRAY)的计算能力、容量以及可靠性也有了很大的提高。它正以高度灵活的用户现场编程功能、灵活的反复改写功能、高可靠性等优点,成为数字电路设计、数字信号处理等领域的新宠。但和所有的数字电路一样,毛刺也是FPGA电路中的棘手问题。它的出现会影响电路工作的稳定性、可靠性,严重时会导致整个数字系统的误动作和逻辑紊乱。因此,如何有效正确的解决设计中出现的毛刺,就成为整个设计中的关键一环。本文就FPGA设计中出现的毛刺问题,根据笔者自己的经验和体会,提出了几种简单可行的解决方法和思路,供同行供交流与参考。1FPGA电路中毛刺的产生我们知道,信号在FPGA器件中通过逻辑单元连线时,一定存在延时。延时的大小不仅和连线的长短和逻辑单元的数目有关,而且也和器件的制造工艺、工作环境等有关。因此,信号在器件中传输的时候,所需要的时间是不能精确估计的,当多路信号同时发生跳变的瞬间,就产生了“竞争冒险”。这时,往往会出现一些不正确的尖峰信号,这些尖峰信号就是“毛刺”。另外,由于FPGA以及其它的CPLD器件内部的分布电容和电感对电路中的毛刺基本没有什么过滤作用,因此这些毛刺信号就会被“保留”并传递到后一级,从而使得毛刺问题更加突出。可见,即使是在最简单的逻辑运算中,如果出现多路信号同时跳变的情况,在通过内部走线之后,就一定会产生毛刺。而现在使用在数字电路设计以及数字信号处理中的信号往往是由时钟控制的,多数据输入的复杂运算系统,甚至每个数据都由相当多的位数组成。这时,每一级的毛刺都会对结果有严重的影响,如果是多级的设计,那么毛刺累加后甚至会影响整个设计的可靠性和精确性。下面我们将以乘法运算电路来说明毛刺的产生以及去除,在实验中,我们使用的编程软件是QUARTUSII20,实验器件为CYCLONEEP1CF400I7。需要说明一点,由于示波器无法显示该整数运算的结果,我们这里将只给出软件仿真的结果。而具体的编程以及程序的下载我们在这里也不再详述,可以参考相关的文献书籍。2毛刺的消除方法首先,我们来设计一个简单的乘法运算电路。运算电路如图1所示。图1乘法运算运算电路及结果(略)如图1C所示,如果在不加任何的去除毛刺的措施的时候,我们可以看到结果C中含有大量的毛刺。产生的原因就是在时钟的上升沿,每个输入(A和B)的各个数据线上的数据都不可能保证同时到达,也就是说在时钟读取数据线上的数据的时候,有的数据线上读取的已经是新的数据,而有的数据线上读取的仍然是上一个数据,这样无疑会产生毛刺信号,而当数据完全稳定的时候,毛刺信号也就自然消失了。A输出加D触发器这是一种比较传统的去除毛刺的方法。原理就是用一个D触发器去读带毛刺的信号,利用D触发器对输入信号的毛刺不敏感的特点,去除信号中的毛刺。这种方法在简单的逻辑电路中是常见的一种方法,尤其是对信号中发生在非时钟跳变沿的毛刺信号去除效果非常的明显。但是对于大多数的时序电路来说,毛刺信号往往发生在时钟信号的跳变沿,这样D触发器的效果就没有那么明显了(见图2,加D触发器以后的输出Q,仍含有毛刺)。另外,D触发器的使用还会给系统带来一定的延时,特别是在系统级数较多的情况下,延时也将变大,因此在使用D触发器去除毛刺的时候,一定要视情况而定,并不是所有的毛刺都可以用D触发器来消除。图2加D触发器后的运算电路及结果(略)B信号同步法在很多文章中都提到,设计数字电路的时候采用同步电路可以大大减少毛刺。另外,由于大多数毛刺都比较短(大概几个纳秒),只要毛刺不出现在时钟跳变沿,毛刺信号就不会对系统造成危害了。因此很多人认为,只要在整个系统中使用同一个时钟就可以达到系统同步的目标了。但是这里面有一个非常严重的问题,就是时钟信号和其他所有的信号一样,在FPGA器件中传递的时候是有延时的,这样根本就无法预知时钟跳变沿的精确位置。也就是说我们无法保证在某个时钟的跳变沿读取的数据是一个稳定的数据,尤其是在多级设计中,这个问题就更加突出了。因此,做到真正的“同步“就是去除毛刺信号的关键问题。我认为这里同步的关键就是保证在时钟的跳变沿读取的数据是稳定的数据而不是毛刺数据。以这个思想为出发点,提出了以下几种具体的信号同步方法。C信号延时同步法首先,我们给出了一个两级乘法(CAB;QDC)的运算结果(如图3所示,这里不再给出运算电路)。可以看到,在没加任何处理过程的时候,两级结果C和Q中都含有大量的毛刺信号。其中毛刺信号产生的原因就是在计算时钟跳变时刻,数据信号同时发生了跳变。另外,第一级信号C中含有大量的毛刺,在经过第二次乘法运算以后被明显放大了,从图3可以看出Q中毛刺更加严重了。但在很多实际工作中,我们最关心的往往是最后的输出结果(Q),只要中间信号的毛刺对后面的输出没有什么影响我们就不需要对它们作任何处理了。因此,这里所提出的信号同步的核心思想就是消除这些中间毛刺信号的影响。图3两级乘法运算的结果仿真(略)信号延时法,它的原理就是在两级信号传递的过程中加一个延时环节,从而保证在下一个模块中读取到的数据是稳定后的数据,即不包含毛刺信号。这里所指的信号延时可以是数据信号的延时,也可以是时钟信号的延时。由于篇幅的关系,这里我们主要以对时钟信号的延时来说明信号延时法的原理。对上述计算过程加时钟信号延时的原理及结果如图4所示。图4加了时钟延时的两级乘法运算及结果(略)图4中的CLKDELAY就是时钟延时环节。在加这个环节以前的时钟信号是直接连到模块B上的,这样两个模块使用同一时钟,好像已经做到了同步,但是如图3所示,结果中含有大量的毛刺,其原因就是产生毛刺的根本原因“竞争冒险“现象没有得到根本性的消除。加时钟延时环节的作用就是要从根本上消除“竞争冒险”,其过程是将控制模块B的时钟延时一段时间,使得模块B的控制时钟在上跳变化时数据C已经达到了稳定,即不含毛刺信号的数据,而这时数据D也已达到稳定,这样竞争冒险现象消除了,从而毛刺信号也得到了有效的抑制,如图4C所示。与时钟延时法的原理相同,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新能源汽车技术与应用考试试卷及答案
- 2025年汽车驾驶员(高级)证考试题库及答案
- 阿坝藏族羌族自治州2025-2026学年七年级上学期语文月考模拟试卷
- 安徽省淮北市杜集区2023-2024学年高一下学期期末考试历史题库及答案
- 安徽省安庆市宿松县2024-2025学年高一下学期期末考试化学题库及答案
- 2025 年小升初哈尔滨市初一新生分班考试语文试卷(带答案解析)-(人教版)
- 2025年教师节感恩老师演讲稿13篇
- 社区消防知识培训课件要点
- 上海市上海师范大学附属金山前京中学2024-2025学年七年级下学期期中考试英语试题(含答案无听力音频及原文)
- 福建省龙岩市非一级达标校2024-2025学年高一上学期11月期中考试历史试卷(含答案)
- 住院病人防止走失课件
- 2024年重庆永川区招聘社区工作者后备人选笔试真题
- 医学技术专业讲解
- 2025年临床助理医师考试试题及答案
- 唯奋斗最青春+课件-2026届跨入高三第一课主题班会
- 2025民办中学教师劳务合同模板
- 2025年南康面试题目及答案
- 2025年事业单位考试贵州省毕节地区纳雍县《公共基础知识》考前冲刺试题含解析
- 高中喀斯特地貌说课课件
- 黄冈初一上数学试卷
- 2025年中国花盆人参行业市场发展前景及发展趋势与投资战略研究报告
评论
0/150
提交评论