基于veriloghdl数字频率计设计与实现_第1页
基于veriloghdl数字频率计设计与实现_第2页
基于veriloghdl数字频率计设计与实现_第3页
基于veriloghdl数字频率计设计与实现_第4页
基于veriloghdl数字频率计设计与实现_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、afwbgh郭祥斌计算机组成徵鲱為鑫魏院计算机与通信工程专 业网络工程班 级 网络工程08-02学 号 200858080223学生姓名郭祥斌指导教师陈沅涛课程成绩完成日期2010年12月31课程设计任务书学院:计算机与通信t程学院专业:网络工程专业课程名称计算机组成原理 课程设计时间20102011学年第一学期1718周学生姓名郭祥斌指导老师陈沅涛题目基于verilog hdl数字频率计设计与实现主要内容:(1)数字频率计前端信号的放大整形处理(2)数字频率计的verilog hdl设计实现(3)数字频率计的cpld/fpga 制作要求:(1)通过对和应文献的收集、分析以及总结,给山和应课题

2、的竹景、意义及现状研究分析。(2)通过课题设计,掌握计算机组成原理的分析方法和设计方法。(3)学按要求编写课程设计报告书,能正确阐述设计和实验结果。(4)学生应抱着严谨认真的态度积极投入到课程设计过程中,认真查阅相应文献以及实现,给出个人分析、设计以及实现。应当提交的文件:(1)课程设计报告。(2)课程设计附件(主要是源程序)。学 院计算机通信工程 班 级 网络08-02班 学生姓名 郭祥斌 课程成绩专 业 学 号 指导教师 完成日期络工程200858080223陈沅涛 2010年12月31日指导教师对学生在课程设计中的评价评分项目优良中及格不及格课程设计中的创造性成果学生掌握课程内容的程度课

3、程设计完成情况课程设计动手能力文字表达学习态度规范要求课程设计论文的质量指导教师对课程设计的评定意见综合成缋指导教师签字年 月曰基于verilog hdl数字频率计设计与实现学生:郭祥斌指导老师:陈沅涛商要.在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量 方案、测景结果都有十分密切的关系,因此频率的测暈就显得更为重耍。测暈频 率的方法有多种,其中电了计数器测量频率再有精度高、使用方便、测量迅速, 以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。电子计数器 测频有两种方式:一是直接测频法,即在一定闸门吋间内测量被测信号的脉冲个 数;二是间接测频法,如周期测频法。直接测频

4、法适用丁高频信号的频率测景, 间接测频法适用于低频信号的频率测量。木文阐述z用verilog hdl语言设计了 一个简申的数字频率计的过程关键词:周期;eda; verilog hdl;数字频率计;波形仿真目录1引言 - 5 -1.1数字频率计概述-5 -1.2频率测量的思想和方法_ 6 -2 verilog hdl 简介 -7-2. 1 verilog hdl 的简介-7 -3数字频率计系统框图_ 8 -3.1数字频率计系统框图-8 -3.2数字频率计系统部件简介 -8 - 4基于verilog hdl数字频率计程序设计-9 - 4.1数字频率计系统模块划分结构-9 - 4. 2 计数模块

5、counter - 9 -4. 3 门校模块 gate control - 12 -4. 4分频模块fdiv - 16 -4.5 寄存器模块 flip_latch- 18 -4. 6多路选择模块data mux - 20 - 4.7动态位选模块dispselect - 22 - 4.8 bcd 译码模块 dispdecoder - 23 - 4.9顶层电路top - 27 - 5 总结 -30 -参考文献 -31 -1引言在电子测暈领域中,频率测量的精确度是最高的,可达10-10e-13数暈级。 因此,在生产过程中许多物理量,例如温度、压力、流量、液位、ph值、振动、 位移、速度、加速度,乃至

6、各种气体的百分比成分等均用传感器转换成信号频率, 然后用数字频率计来测量,以提高精确度。国际上数字频率计的分类很多。按功能分类,测量某种单一功能的计数器。如频 率计数器,w能专门用来测量高频和微波频率;吋间计数器,是以测量吋间为基 础的计数器,其测吋分辨力和准确度很高,可达ns数量级;特种计数器,它具 有特种功能,如可逆计数器、予置计数器、差值计数器、倒数计数器等,用于工 业和白控技术等方面。数字频率计按频段分类(1)低速计数器:最高计数频率 10mhz; (2)中速计数器:最高计数频率10100mhz;(3)高速计数器:最高计数频率100mhz; (4)微波频率计数器:测频范围1 一80gh

7、z或更高。争片机自问世以来,性能不断提高和完善,其资源又能满足很多应用场合的需要, 加之单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、价格 低廉等特点,因此,在工业控制、智能仪器仪表、数据采集和处理、通信系统、 高级计算器、家用电器等领域的应用日益广泛,并且正在逐步取代现有的多片微 机应用系统。单片机的潜力越来越被人们所重视。特别是当前用cmos工艺制成 的各种单片机,由于功耗低,使用的温度范围大,抗干扰能力强、能满足一些特 殊要求的应用场合,更加扩大y单片机的应用范岡,也进一步促使单片机性能的 发展。1.1数字频率计概述频率计的基木原理是用一个频率稳定度高的频率源作为基准吋钟

8、,对比测量其他 信号的频率。通常情况下计算每秒n待测信号的脉冲个数,此吋我们称闸门吋间 为1秒。闸门时间也可以大于或小于一秒。闸门时间越讼,得到的频率值就越准 确,但闸门吋间越k则没测一次频率的间隔就越长。闸门吋间越短,测的频率值 刷新就越快,但测得的频率精度就受影响。木文数字频率计是用数字显示被测信 号频率的仪器,被测信号可以是止弦波,方波或其它周期性变化的信号。如配以 适当的传感器,可以对多种物理量进行测试,比如机械振动的频率,转速,声音 的频率以及产品的计件等等。因此,数字频率计是一种应用很广泛的仪器电子%.觚%-* * 、系数测量结果、,标准吋钟 分频被测信号放大整形计nt 榇1.2频

9、率测量的思想和方法1. 频率测量的基木思想测量被测信号在单位时间内的脉冲个数,其数字表达式f = n / t其屮:f为被测信号的频率 n为脉冲的个数t为被测信号产生n个脉冲所需的吋间 频率测量方法直接测量法:直接测量被测信号的频率,通过计数法来对被测信号在一定 吋间内的脉冲个数进行计数。直接厕灵法的结构框图如图1.2.1所示。图1.2. 1直接测量法的结构框图误差来源技术过程中最大存在着±1个字的量化误差 对吋间t的准确把握,主要包括准吋钟的吋间准确性、整形电路、分频电路 以及技术时间控制闸门的开关速度等因素。直接法测量的最大相对误差可以表达为(df/f ) max=± (

10、 |1/n| + |g| ) =± ( |l/ft| + |g| )其中:n为脉冲的个数,g为标准时钟的频率稳定性,f为被测信号频率,t为被测 信号产生n个脉冲所需的吋间。功能及技术指标频率测量范围:10hz100mhz 测量分辨率:1hz 测量通道灵敏度:50mvpp 通道输入阻抗:不小干lookq 测量误差:±1 测量结果显示:6位数码管显示 该数字频率计的操作面板如图1.2.4所示输入波形选择方波三角波测量结果显示正弦波简易数字频率计d昆fe选择被测输入o o+ gnd图1.2.4简易数字频率计的操作面板其中,被测信号可以有三种,分別是方波、三角波和止弦波;测量结果显

11、示釆用 六个数码管来显示;量程分为三个,分别为:0999999hz、09999.99khz、0 99.9999mhz2 verilog hdl 简介2.1 verilog hdl 的简介verilog hdl 是一种硬件描述语言(hardware description language),为 了制作数位电路(数字电路)而用来描述asics和fpgas的设计之用。verilog 的设计者想要以c程序语言(en:c programming language)力基础设计一种语 言,可以使工程师比较熟悉跟容易接受。事实上,它产生与c程序语言类似的不 严谨性质,并且大概与pascal很相像。这种语言跟

12、传统的程序设计语言不同,在于它的程序叙述并非严格地线性 (循序)执行。verilog模式包含不mj模组(modules)的阶层犬系。模组(modules)是输出(inputs)和输入(outputs)所定义岀来的一个集合。在每个模组屮,有一串 的电线(wires)、暂存器(registers)和子模组(submodules)的定义。并且在每个 模组里面,语言叙述大部分都被群组成为各种的执行区块(blocks),用来定义该 模组所产生的行力描述。在每个区块(blocks)内,使用begin和end的关键字 来区隔开来,其中的叙述是循序被执行。但是m个设计,不m的区块间的执行是 平行的。这个语言的

13、叙述之子集合是可合成(synthesizable)。如果在一个电路设计 的模组中仅包含可合成的叙述,那麽这个电路设计就可以被适当的软件,转换合 成为电脑芯片的电路layout。3数宁频率计系统框图3.1数字频率计系统框图设计如图3. 1. 1所示的数字频率计系统电路框图sw1、2、3按键消抖可量程1量程2程量程3逻辑器件cpldtpgaled显示模块图3. 1. 1所示的数字频率计系统电路框图3.2数字频率计系统部件简介1.放大整形数字频率计允许测量信号的类型有三利方波、三角波和止弦波,并且信号 的测量通道灵敏度为50mvpp,为此,需要将被测信号放大整形成标准的ttl 电平的方波型号,便干c

14、pld/fpga对信号脉冲的计数。2. sw1、sw2、sw3 按键sw1、sw2、sw3这三个按键用来在测量的吋候,用户根据被测信号的大致频 率范围选择不m的适合被测信号的量程。在按键的设计中,需要考虑实际按键的消抖问题3. 标准吋钟标准时钟为频率计测量提供精度和对比较高的时基信号,其时间的稳定性与 精度将会直接影响到频率计测量的准确性。4. led显示模块频率计将测量的结果通过6位数码管(led)来显示。4基于verilog hdl数字频率计程序设计 4.1数字频率计系统模块划分结构数字频率计中的cpld/fpga是频率计的核心,主要实现在一定时间内,对被测信 号的脉冲个数进行计算,并且转

15、化为相应的频率值显示在六个数码管上。首先将 系统分成七个模块来分别设计仿真。分别有以下七个模块:经过上述模诀化划分沿的结构框如图4. 1所示标准时钟放大整形 后的信号量程选择幵关图4. 1模块化划分后的结构计数模块counter:对包含被测信号频率信息的脉冲进行计数 门控模块gate_control:根据量程,按制技术模块计数。參分频模块fdiv:将标准吋钟分频,得到计数以及动态显示所需的吋钟。參寄存器模块flip_latch:对计数模块的计数值进行寄存。多路选择模块data_mux:根据动态选择信号,选择相沒的需要显示的计数值动态为选择模块dispselevt:输出动态显示中的位选信号 bc

16、d译码模块dispdenoder:将bcd码译成数码管的显示数据4. 2计数模块counter该模块主要完成对被测信号经过放人整形后输入到可编程逻辑器件的f_in信号是现在一定的吋间下的计数,采用六个异步bcd码十进制计数器来实现0999999范围的计数。计数模块的结构框图如图4. 2. 1所示。counterenq53.oclrq43.ofjnq33.oq23.oq13-0qo3.of outinst"l图4. 2.1计数模块的结构框图 根据模块实现的功能设计verilog hdl源代码如下: module counter (en, clr, f in, f out, qo, ql

17、, q2, q3, q4, q5); output 3:0 q5, q4, q3, q2, ql, q0;endelseoutput fout; input en; input clr; input f_in;reg 3:0 q5, q4, q3,q2,q1,qo; reg fout;regf outo, f outl, f_out2, f_out3, f_out4;always (posedge e_tn)beginif(en = fbl)&&(clr = vbo)&&(qo != 4bl001)beginq0 <= q0 + 4fboool;begin

18、q0= 4 boooo;if(en = lbl)&&(clr =fbo)&&(ql != 4bl001) beginq1 <= q1 + 4boool; f_out <= fbo;endelsebeginq1 <= 4'boooo; if(en = lbl)&&(clrfbo)&&(q2 != 4bl001) beginq2 <= q2 + 4boool;f out <= 1bo;f out <= 1bo;endelsebeginq2 <= 4b0000;if(en = l,bl)

19、&&(clr =fbo)&&(q3 != 4bl001) beginq3 <= q3 + 4b0001;f_out <= fbo;endelsebeginq3 <= 4 boooo;if(en = fbl)&&(clr =fbo)&&(q4 != 4bl001) beginq4 <= q4 + 4'boool; f_out <= 1bo;endq4二 4 boooo; if(en = l,bl)&&(clrfbo)&&(q5 != 4'blool) be

20、ginq5 <= q5 + 4'b0001; f_out <= 1bo;endelsebeginq5 <= 4fboooo;f_out <= lbl;endendendendendendendendmoduleelsebegin该模块定义输入端口如下:參en:异步bcd码十进制计数器的全局使能信号參clr:异步bcd码十进制计数器复位信号參f_tn:被测信号经过放大与整形处理后的信号该模块定义输出端u如下:參f_out:超出技术范围0999999的输出信号,用来指示提醒用户选择更大的旦:口里不王。參q0:计数器的最低位输出 q2:计数器的第4位输出參q1:计数器

21、的第5位输出 q3:计数器的第3位输出參q4:计数器的第2位输出 參q5:计数器的第1位输出在altera公司的软件工具quartusii屮编译和波形仿真符到波形如图4. 2. 2所zj、- ou gcowte, mi _资& mastertiirebar10.05m土jpohler15.4m interval:535n$ start:opsenc:ops$ xx'x<-;>h:貺;,-:/« i 麴 i 浼 ovzl:z:-n:c:-psbnso.10.o 20.nso 吼nsikjelbbn£ soui cliekf- f.s s as s

22、s:mgaj 095(m图4. 2. 2计数模块counter的仿真波形4. 3 门控模块 gate_control门控模块实现检测外界景程的选择,外且根据暈程输出控制6位bcd码十进 制计算器的计数时钟,以及在测量完一次信号频率后,计数器计数值清零。计数 器的清零要与后级寄存器的锁存吋刻做很好的吋序配合。应该实在计数器测量完 一次信号频率后,首先将数据锁存到寄存器,然后再将计数器值清零,这样可以 惊醒下一次测量。门控模块的结构框图如图4. 3. 1所示gatecontrolswolatch_ensw1counterclrsw2counterenf1hzdp_s1hzf1ohzdp_s10hz

23、floohzdp一s100hzinst3 图4. 3.1门控模块结构框图根据模块实现的功能设计verilog hdl源代码如下: module gate_control (swo, sw1, sw2, f lhz, f lohz, f loohz,latchen,counter_clr,counter_en,dp slhz, dp slohz, dp_sl00hz);output latchen;output counterclr;regdp_slhz, dp_slohz, dp_sloohz;output counteren;regfref;outputregwire_l;dp_slhz,

24、dp_slohz, dp sloohz;regwire_2;input swo, sw1,sw2;/初始化输入以及屮间量fref <= fbo;wire_l <= 1bo;wire_2 <= 1bo;end/根据不m的外界景程选择,选择相应的计数基时钟always (swo or sw1 or sw2 orflhz or flohz or floohz)beginif(sw2 = lbl)beginfref <= floohz;dp_slhz, dp_slohz, dp_sl00hz <=3b001;endelse if(swl = lbl)beginfref &

25、lt;= flohz;dp_slhz, dp_slohz, dp_sl00hz <=3, bolo;else if(swo = lbl)beginfref <= flhz;dp_slhz, dp_slohz, dp_sl00hz <=3bl00;endend/根据不m的计数基时钟,提供输出相应的计数器计数值的清除脉冲与锁存器锁存脉冲always (posedge fref)beginwire 1 <= ! wire 1;endalways (negedge fref)beginwire 2 <= wire 1;endassign counter_en = wire

26、_l;assign latch_en = (!wire 2);counter en) & wire 2; assign counter_clr = (!endmodulecounter_en) & (! latch_en) (!该模块定义输入端如下: swo、sw1、sw2:量程选择开关 flhz: 1hz的标准时钟输入 flohz: 10hz的标准时钟输入參floohz: 100hz的标准吋钟输入该模块定义输入端口如下:參latch_en:用来是能寄存器所存数据 counter_clr:用于计数器的清零參counter_en:用丁使能计数概开始计数參dp_slhz:选择999

27、999hz暈程吋,用丁掠制媪示中的小数点位置 dp_slohz:选择9999. 99hz量程时,用于控制显示中的小数点位置參dp_sl00hz:选择99. 9999hz景程吋,用于按制显示中的小数点位置在altera公司的软件工具quartustt中编译和波形仿真得到波形如图4. 3. 2所zj、- ow :、d 8 /多诊®曼妙4图4. 3. 2门控模块的仿真波形4.4分频模块f d i v分频模块在系统全局时钟的驱动下,经过分频得到系统中所需要的多种频率成分的吋钟信号。分频模块的结构框图如图4. 4. 1所示。fdivelkf1hzf1ohzf1oohzflkhzinstl图4.

28、 4.1分频模块结构框图根据模块实现的功能设计verilog hdl源代码如下:modulefdiv(clk, f lhz, flohz, f loohz, f lkhz );output flhz, flohz, floohz, flkhz; input elk;reg flhz, flohz, floohz, flkhz; integercntl=0, cnt2=0, cnt3=0, cnt4=0; always (posedge elk) begin/if(cntl<9999)/实际系统分频值if(cntl < 2)/仿真时的分频值beginflkhz <= 1bo;

29、cntl = cntl + 1;endelsebeginflkhz <= lbl; cntl =0;endendalways (posedge flkhz)begin/if(cnt2<9)/实际系统分频值if(cnt2 < 2)/仿真时的分频值beginfloohz <= 1bo; cnt2 = cnt2 + 1;end el se beginfloohz <= lbl;cnt2 = 0; endendalways (posedge floohz) begin/if(cnt3<9)/实际系统分频值if(cnt3 < 2)/仿真时的分频值beginflo

30、hz <= 1bo; cnt3 = cnt3 + 1;endelsebeginflohz <= lbl; cnt3 = 0;endendalways (posedge flohz) begin/if(cnt4<9)/实际系统分频值if(cnt4 < 2)/仿真吋的分频值beginflhz= fbo; cnt4 = cnt4 + 1;endelsebeginflhz= fbl; cnt4 = 0;endendcndmodulc该模块定义输入端口如下: 參clk:全局系统时钟信号 该模块定义输出端口如下: flhz:输出1hz的时钟信号 flohz:输出1hz的吋钟信号 f

31、lkhz:输出1hz的吋钟信号在altera公司的软件工具quartusii中编译和波形仿真得到波形如图4. 4. 2所 示。;signments processing tools window help' )崎3® ® -iv*" ne§ i4/.vheftirrebci:1q05n5-50p?imeivet99slatendi«i«10.05 ns10.0 as10.05 as20.0 ns30 0 asm a z-dzflkh:flookflch:fl;.zbobi bi b i bi丨诏 fdiv.vwf阁4. 4.

32、2分频模块的仿真波形4.5寄存器模块flipjatch寄存器模块实现每一个测量频率吋,计数器计算值的暂吋存储。 寄存器模块的结构框图如图4.5.1所示。jiinst2a53.oa43.oq53.oa33.oq43.oa23.oq33.oa1 3.oq23.oao3.oq13.oelkqo3.oflip latch图4.5.1寄存器模块根据模诀实现的功能设计verilog hdl源代码如下:module flip_latch (elk, ao, al, a2, a3, a4, a5, qo, ql, q2, q3, q4, q5); output 3:0 q0, ql, q2, q3, q4,

33、q5; input elk;input 3:0 ao, al, a2, a3, a4, a5;reg 3:0 qo,q1,q2, q3, q4, q5;always (poscdgc elk)q4 <= a4q5 = a5endbeginq0 <= ao; q1 <= al; q2 <= a2; q3 <= a3;endmodule该模块定义输入端u如下: elk:所存数据信号输入,当elk的上升沿到来时,寄存器将输入端信号锁存 进寄存器,并且改变输出。 ao,a1,a2,a3,a4,a5:寄存器的数据输入端该模块定义输出端口如下: qo,q1,q2, q3,q4

34、,q5:寄存器的数据输出端。在altera公司的软件工具quartusii巾编译和波形仿真得到波形如图4. 5. 2所 7jo|tovxt /省矽珍c|今1«>./f lip.latcb/fliplalch. v wf1ka my淋 time bar 95ic.csr念v«1q« at 10.05 asix1:3xjiyelkadwr-m)2 -m)1) -4fl0 q a1 q a2 田a3 q m q a5 b 93 s ql s 02 s 03 囡如 b osb0bfiby' "d'o"' b0 b0 b 2

35、b 0:0 b 0:0 b :u!b :0!l b :nop 曹曹曹零p jul4lap 曹曹曹零p jul4lab xin b zzn b un b nn小 | por/erop?irieivat-10.06 mslatop?errf0p««0 0 as厂n1: 0000 ;cfol0010xcon0100p0011oilo0101xor.o;0111010101100111xuoo10011110nil1100xno:)1010101010u1100xno:;11100111mo1101x11:01011xxxxxxxxxxxxxxxxxxxxxxxx:'j y

36、 nk 1005"20-9as图4. 5. 2寄存器模块的仿真波形4.6多路选择模块data_mux多路选择模块实现测量频率值的分时显示,即动态显示。经过多路选择器模块来 分时地传输数据。多路选择模块的结构如图4.6.1所示。iinst8a53.oa43.oa33.oa23.oa13.oao3.oq3.odisp_select2.odata mux图4.6.1多路选择模块结构框图根据模诀实现的功能设计verilog hdl源代码如下: module data_mux (disp_select, ao, al, a2, a3, a4, a5, q); output 3:0 q;inpu

37、t 2:0dispselect;input 3:0 a0, al, a2, a3, a4, a5;reg 3:0 q;always (disp_select, a5, a4, a3, a2, al, ao, q) begincase(dispselect)3b000: q <= a5;3b001: q <= a4;3'bolo: q=八3;3b011: q= a2;3'bloo: q = al;blol: q <= ao;default: q <= 4 bo;endcaseendendmodule该換块定义输入端i i如卜*: disp_select:选

38、择信号输入 ao,a1,a2,a3,a4,a5:多路选择模块的数据输入端口该模块定义输出端口如下:參多路选择模块的数据输出端口。在altera公司的软件工其quartusii中编译和波形仿真得到波形如图4. 6. 2所zj、。da(a_mux4.7动念位选模块dispselectmodule dispselect(clk,disp_select,q);output 5:0 q;output 2:0 disp_select;input elk;reg 5:0 q;reg 2:0 disp_select;always (posedge elk)beginif(disp_select < 3b

39、l01)disp_select <= disp_select +3bl;elsedisp_select <= 3b0; case(disp_select)3w)0: q <= 6b 100000; 3'bool: q <= 6bo 10000;图4. 6. 2多路选择模块的仿真波形动态位选模块用來驱动数码动态地显示频率测量数据,分时地选择各个数码管进 行显示动态位选的结构框图4. 7. 1所示。dispselect=elkq5.o 1disp_select2.oinst7图4. 7.1动态位选模块的结构框图根据模块实现的功能设计verilog hdl源代码如下:

40、3b010: q <= 6*b001000; 3boll: q <= 6b000100; 3bloo: q <= 6boooolo; 3blol: q <= 6'boooool; default: q <= 6b000000;endcaseendendmodule该模块定义输入端口如下: elk:动态位选的吋钟信号输入,一般取lkhz左右的标准吋钟。该模块定义输出端口如下:參disp.select:动态位选屮间量输出,用于与系统屮其他模块之间的同步。 q:动态位选信号输出,可以直接接到数码管的公共端。在altera公司的软件工具quartustt中编译和波

41、形仿真得到波形如图4. 7. 2所maitme bar.10.05 ns土j porta:15.0 re496msuitopeenc:0p小。s dispselectrantelk q qvalue tt 10 35 nsbobkxih10.c ns23 0 nsx 0 ns40.0 os10.05 nxiixxnnq5 q4 -qc3 <2a dnp.qcu?l4一 p_se xxixk图4. 7. 2动态位选模块的仿真波形4.8 bcd 译码榄块 dispdecoderbcd译码模块主耍实现bcd码到7段数码管显示码字段的转换,同时,考虑到频 率测量中的一些“零”的处理,比如选择量程

42、广999999hz,但被测信号频率为 100hz,这样在显示的吋候就需要将6为数码管的前三位屏蔽。bcd译码模块的结构框图如图4. 7. 1所示。dispdecoderdata_in3.odisp_select2.odp_s1hzdp_s10hzdp_s100hzq53.oq43.oq33.oq23.oq13.oqo3.o counter outdata一out6-0】dpinst5图4.8.1 bcd译码模块的结构框图根据模块实现的功能设计verilog hdl源代码如下:module dispdecoder(reg 6:0 data out;datan,reg hide;disp_sele

43、ct,initialdp_sl hz,dp_s 1 ohz,dp一s 1 oohz,begindp <= 1bo;q5,q4,q3,q2,q 1,qo,counter_out,hide <= 1bo;dataout,enddp);/译码显示数据output 6:0 data_out;always (data_in,hide,data_out)output dp;begininput 3:0 data in;if(hide = vbo)input 2:0 disp_select;begininput dp_sl hz,dp_s 1 ohz,dp_s 1 oohz;case(datai

44、n)input 3:0 q5,q4,q3,q2,q1,q0;4fb0000 : data out <=input countcrout;7,bl 111110;"0reg dp;4b0001 : data out <=7bolloooo; "14'b0010 : data out <=7*61101101; /24'b0011 : data out <=711111001; /34'b0100 : data out <=7*60110011; /44'b0101 : data out <=7'blo

45、lloll; /54'b0110 : data_out <=7blolllll; "64'b0111 : data out <=7.bl 110000; "74'bl000 : data out <=7.blllllll; /84'bl001 : data out <=711110011; "9default : data out <=7*b0000000;endcaseendend/小数点位置与零数字的处理always(disp_select,dp_s 1 hz,dp_s 10hz,dp_s 1 oo

46、hz,q5,q4,q3,q2,q 1,counter_out,dp,hide) beginif (disp sclcct = 3'b001) && (dp_sl00hz = rbl)|(disp select = 3'b011) && (dp_sl0hz = lbl)|(disp_select = 3bl01) && (dpslhz = rbl)dp <= pbl; elsedp <= 1bo; case(disp_select)3'b000: beginif(counter_out =1bo) &&a

47、mp; (q5 = 4.b0)hide <= lbl;elsehide <= 1bo; end3b001: beginif(counter_out =1bo) && (q5 = 4*b0) &&(q4 = 4bo) &&(dp sloohz != vbl)hide <= vbl;elsehide <= 1bo;end3b010: beginif(counter_out =pbo) && (q5 = 4,b0) &&(q4 =4bo) &&(q3 = 4bo) &&am

48、p;(dp_sloohz != rbl)hide <= rbl;elsehide <= 1bo;end3boll: beginif(counter_out =rbo) && (q5 = 4bo) &&(q4 = 4disp_select:来自动态显示位模块,实现两者之间的同步 dp_slhz, dp_slohz, dp_sloohz:输入小数点位置控制信号来自门控模块 q5,q4,q3,q2,q1,qo:计数器的计数值输入,用来控制“零”显示控制b0) &&(q3 = 4bo)&&(q2 = 4bo) &&am

49、p;(dp_sloohz != rbl)&&(dp_slohz != lbl)hide <= rbl; elsehide <= rbo;end3bloo: begin该模块定义输入端口如下:參data_in: bcd码字输入信号if(counter_out =pbo) && (q5 = 4,b0) &&(q4 = 4rb0) &&(q3 =4fb0) &&(q2 = 4,b0) &&(q1 = 4*b0) &&(dp_sloohz != rbl)&&(dp

50、_slohz != lbl) hide <= rbl; elsehide <= rbo;enddefault:hide <= pbo;cndcascendendmodule counter.out:计数器计数溢出信号,用來提示用户更换更大量程 该模块定义输出端口如下: data_out:经过译码后的7段数码管显示数据输出,可以直接连接到数码管 的数据端口參dp:小数点控制信号在altera公司的软件工具quartusii中编译和波形仿真得到波形如图4. 8. 2所uj ditpdecodefhasleitmebai1005 rrt30mirtervd7.05 wsun:end

51、10.0ns20 0 ns<0 0 as50 0as10.05 as田田田田q田q田:ouater_exxtdp-slkiip.stokrip.siwkrqo01w05dat<_:niisp.select办00)3001000110103:1ocodco00010010oou011001010110ocolc010010001!0100010!011001110010010xxxxra01110100»io1010001010110011111000311oil/,.a010101100111100010010100100xioi图4. 8. 2 bcd译码模块的仿真波形

52、4.9顶m电路top在设计完各个模块后,需要将各个模块有机地组合成一个整体,最后来实现系统 的功能。在数字频率计中,同时采用了电路原理阁示的设计以及verilog hdl 语言来编写的顶m电路,其中顶层如图4. 9.1所示。图4. 9. 1顶层电路top用vcrilog hdl语言描述如下:module main( clock,sw2,sw1,swo,fjn,overalarm,dp,dispclata,disp_sclcct);output over_alarm;output dp;output 6:0 dispdata; output 5:0 disp_select;wire synthestzrd_wtre_o; wire synthesized jvire_1; wire synthesized jvire_2; wire 3:0 synthesized_wire_32;wire 3:0 synthrstzrd_wtre_33;inputclock;wire3:0synthesized_wire_34;inputsw2;in

温馨提示

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

评论

0/150

提交评论