毕业设计(论文)基于FPGA的对数字频率计的设计.doc

上传人:文库蛋蛋多 文档编号:3979122 上传时间:2023-03-30 格式:DOC 页数:24 大小:331KB
返回 下载 相关 举报
毕业设计(论文)基于FPGA的对数字频率计的设计.doc_第1页
第1页 / 共24页
毕业设计(论文)基于FPGA的对数字频率计的设计.doc_第2页
第2页 / 共24页
毕业设计(论文)基于FPGA的对数字频率计的设计.doc_第3页
第3页 / 共24页
毕业设计(论文)基于FPGA的对数字频率计的设计.doc_第4页
第4页 / 共24页
毕业设计(论文)基于FPGA的对数字频率计的设计.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《毕业设计(论文)基于FPGA的对数字频率计的设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于FPGA的对数字频率计的设计.doc(24页珍藏版)》请在三一办公上搜索。

1、 本 科 毕 业 论 文题目:基 于 FPGA 的 对 数 字 频 率 计的 设 计 学 院:计 算 机 信 息 与 工 程 学 院专 业:电 子 信 息 科 学 与 技 术 班 级:2 0 0 6 级 电 子 班 姓 名: 学 号: 指导老师: 基于FPGA的数字频率计的设计摘要:现场可编程门阵列的出现给现代电子设计带来了极大的方便和灵活性,使复杂的数字电子系统设计变为芯片级设计,同时还可以很方便地对设计进行在线修改。本文以设计个四位显示的十进制数字频率计为例,在片FPGA芯片上实现多位数字频率计的设计,来完成对FPGA和Quartus2的学习。在设计中,所有频段均采用直接测频法对信号频率进

2、行测量,克服了逼近式换挡速度慢的缺点。关键词:数字频率计;Verilog HDL;现玚可编程门阵列(FPGA);直接测量法 Construction of the Digital Cymometer Based on FPGAHONG XiaoningAbstract:The appearance of FPGA(Field Programmable Gate Array)leads to the convenience and flexibility of the modern electronic construction,which changes the complicated sys

3、tem construction into the on chip construction.On the other hand,itCan also make some online modification expediently. W ith a casewhich describes an quadbit shownon thedecinaldigitalfrequency, the author introduces the construction method and the realization steps on a single FPGA chip. During the

4、construction process, the signal measurement,which overcomes the shortcoming of frequency of all approxmate the Frequency Channel is measured by the way of direct shift speed. Keyw ords: design of the digital cymom eter; Verilog HDL;FPGA (Field Programmable GateA rray);direct frequency m easurem ent

5、目录前言41、系统总体设计42:各个模块的实现62.1:1000进制计数器62.2:50KHz分频器72.3:14位锁存器(DFF14bite)72.4:14位计数器(CNT14bite)82.5:数码管动态显示(DISPLAY)93:各个模块的的仿真103.1:1000进制计数器103.2:50KHz分频器103.3:14位锁存器(DFF14bite)113.4:14位计数器(CNT14bite)123.5:系统顶层仿真13总结14致谢15参考文献15符录16前言随着电子技术和计算机应用技术的深入发展以及EDA设计技术的不断进步与完善,不仅给电子系统的设计和应用带来了新的设计思路和发展机遇,

6、也对传统的电子设计手段提出了严峻的挑战。传统的电子系统设计,是以各种不同的集成电路芯片为基础,按照功能要求在印制电路板上将不同的芯片拼接、组合,构成实现某种功能的电子系统。这样的设计方法不仅繁琐,而且设计过程中的错误和不足之处不能及早的发现;进入调试阶段后,一旦发妯错误或缺陷,也不能现场更正。这将使研发的时间变长,研发的成本加大。能够克服上述缺点的是片上可编程系统(简称SOPC)。微电子技术、计算机应用技术的飞速发展,不仅使得电子系统的小型化、微型化进程加快,而且给电子系统设计带来了前所未有的变革。大规模FPGA芯片问世,为电子系统设计提供了硬件基础础,几乎大多数电子系统都可以在一块芯片上实现

7、。ALTERA公司的Quartus2软件就是EDA设计的最优秀的软件之一,使用它不仅可以灵活地设计电子系统,而且还可以对设计方案进行模拟仿真,及早发现错误和缺陷。使用FPGA的好处不仅表现在设计的初级阶段,即使在电子系统设计完成之后,甚至投入实际使用的过程中,还可以根据实际需要添加功能。本次写作是以设计频率计为实例来学习Verilog HDL语言和Qartus2软件。1、系统总体设计在Quartus2软件中,可使用多种编程语言。本文以Verilog HDL为编程语言。采用Verilog HDL语言设计一个复杂的电路系统,运用自顶向下的设计思想,将系统按功能逐层分割的层次化设计方法进行设计。在顶

8、层对内部各功能块的连接关系和对外的接口关系进行了描述,而功能块的逻辑功能和具体实现形式则由下 一层模块来描述。根据本数字频率计实现原理,运用自顶向下的设计思想。系统总框图如下:50K分频器1000进制计数器14位计数器14位锁存器动态数码管显示1KHz1Hz测试信号数据显示数据1KHz50MHZ显示信号 1-150MHz的时钟信号经过分频,产生1KHz的信号,分别送到1000进制计数模块和动态显示模块。经过1000进模块的信号生成1Hz的信号,作为14位计数器的控制信号。进入动态显示的1KHz信号作为动态输出的时序信号。测试信号通过14位的计数器后,由控制信号将其转换为输出显示的数据,再经过1

9、4位的锁存器缓冲再送到动态显示模块中。通过动态显示模块最终生成显示信号。在这次论文中,将整个所要设计的频率计做为顶层,下面有五个模块:CNT1000(1000进制计数器)、CNT50000(50KHz分频器)、DFF14bite(14位锁存器)、CNT14bite(14位计数器),动态数码管显示(DISPLAY)。每个模块都是独立的,都能单独使用。每个模块都是最小的子模块,就直接用Verilog HDL语言来描述。设计的系统顶层电路如图所示: 1-22:各个模块的实现各个模的实现是独立的,都运用Verilog HDL作为编程语言。2.1:1000进制计数器作用:在此次设计中,这一模块用来将输入

10、信号的频率降低为原来的1/1000,用作分频器。由总框图可知,当50MHz的时钟信号经过分频后,得到了1KHz的时钟信号,再经过此模块,就得到一个1Hz的时钟信号。 2-1生成方式:Verilog HDL设计中定义三个端口(一个输入端,一个输出端,q_c没有用到),一个计数变量。当输入端的时钟发生上升沿跳变时,计数变量自加1,当计数达到1000(16进制为3e7)的时候,输出端就产生一脉冲信号,作为下一模块的输入变量。图2-1为代码的生成图。2.2:50KHz分频器作用:由总框图可以知,这一模块的作用是将输入的50MHz的时钟信号转换为1KHz的时钟信号输出。1KHz的信号用于动态显示模块的位

11、选和段选。作为计数信号的时钟信号。2-2生成方式:用Verilog HDL编程语言写其代码,则设计中定义两个端口(一个输入端,一个输出端),一个计数变量。当输入端的时钟发生上升沿跳变时,计数变量自加1,当计数达到50000(16进制为C34F)的时候,输出端就产生一脉冲信号,作为下一模块的输入变量。2.3:14位锁存器(DFF14bite)作用:在总框图中,14位锁存器用作显示数据的输出缓冲。当计数模块送出所计数得到的数值时,就会锁存在锁存器中。当时钟信号到来时,就会将锁存的数据送到动态显示模块中显示出来。所以14位的锁存器是作为一个数据输出的缓冲器。生成方式:使用Quartus2软件中的锁存

12、模块,如下图所示:2-3当时钟信号到来时,输入端就将数据D13.0锁存并输出为Q13.0,直到下一个时钟信号的到来,再重复上一过程。以Verilog HDL来编写代码,应有一个14位的输入端,一个时钟信号输入端和一个14位的输出端;当时钟信号发生变化时,输出端就将输入端此时输入的值。2.4:14位计数器(CNT14bite)作用:这一模块用来接收被测信号,并转换成被测信号的频率。如图(6)所示,测试信号由模块的CLK接收;当ENABL信号为0时,计数完成,并将所得的数据保持,并送到下一个模块;CLR信号为0,将所有计数清零,进入下一次计数。生成方式:使用Quartus2软件来设计,其模块图如下

13、:2-4用Verilog HDL编写代码时,应有三个输入端,一个13位的输出端和一个计数的变量。当输入端CLK发生上升沿跳变时,计数变量自加1,并将其转换为相应的二进制数(将十进制的每一位用四位二进制数表示);当ENABL的输入信号为0时,就将计数变量的值输出,并将原有的计数清零。2.5:数码管动态显示(DISPLAY)作用与生成方式:将缓冲器里的值转换为动态输出的数据值。模块电路如图所示:2-5使用Verilog HDL语言时,CLK信号则作为时钟信号,内设一变量用来记数CLK的脉冲数,作为时间延迟;24位的输入端口,用作输入要显示的数据,此次论文用了输入端口中的低13位;7段数码管的7位输

14、出端口,用作输出显示的数据;6位的位选输出端,输出的数据为位选信息。在程序的内部设有十个变量,其中六个变量(LED1Q,LED2Q,LED3Q,LED4Q,LED5Q,LED6Q)每个变量四位,用来接收24位的输入变量;四位变量led_xx用作段选;七位变seg_out用作数据输出即7段数码管的7位输出端口的输出数据;六位变量led_out用作位选信号是,初始值为1(二进制的000001),每左移一次,选中高一位的数据显示,当发生溢出时,对led_out再次赋值1(二进制的000001);8位变量delay用作延时信号。3:各个模块的的仿真各个模块是独立的,所以每个模块可以单独设计并验证。3.

15、1:1000进制计数器仿真结果如图所示:3-1仿真时钟的周期为40ns,得到的输出端CQ1000的周期为40us。因为1000进制计数器的功能就是将输入信号的频率频率降低为原来的1/1000,即周期为原来的1000倍。所以这一模块符合要求。3.2:50KHz分频器仿真结果如图所示:3-2仿真时钟周期为40ns,输出端OUT_1KHz输出为2ms。因为这一模块的功能是将输入信号的频率降低为原来的1/50000,即周期为原来的50000倍。所以这一模块符合要求。3.3:14位锁存器(DFF14bite)仿真结果如图所示:3-3由输入和输出对比可知:输出的数据都是以输入的数据在时钟跳变的时候的值。这

16、一模块的功能就是在发生时钟跳变时将输入端的数据送到输出端,当时钟没发生变化时保持原来的值不变,用做锁存器。所以这一模块符合要求。3.4:14位计数器(CNT14bite)如图3-5所示,当时钟信号每得到一个高电平时,Q13.0就会自加1。但是,在得到的数据里,有的时候会出现毛刺;所以在输出的时候就加上了一个14位的缓冲级(14位的锁存器)。因为在设计时就已经用Q13.0的四位二进制数表示一位十进制数,所以仿真的结果表明这一模块符合要求。3-43.5:系统顶层仿真仿真结果如图所示:3-5L1-L6为位选信号,由波形可知,L1-L6是逐一显示的。由于测试的时间不是很长,所以所测的值为零。开始输出的

17、信号为(0000000),即显示为零。总结经过这段时间的学习和写作,论文基本完成。从最初的茫然,到慢慢的进入状态,再到对思路逐渐的清晰,整个写作过程难以用语言来表达。几个月的忙碌,却也没做成什么;虽然能将电路用Verilog HDL写出,编译成功并在Quartus2上仿真完成;但用 伟福EDA6000 SOPC/DSP/EDA通用实验开发系统试过,由于对其的使用不是很了解,最终无法验证所画电路是否正确。致谢四年的读书生活在这个夏天即将划上一个句号,对于我的人生这只是一个逗号,我将面对人生的另一次征程。四年的学习生活在老师和同学的陪伴,父母亲人和朋友的支持下走了下来,在论文即将付梓之际,思绪万千

18、,心情久久不能平静。感谢培养教育我的贵州民族学院。诚挚的感谢我的论文指导老师杨老师。他在忙碌的教学工作中挤出时间来审查、修改我的论文。还有教过我的所有老师们,你们严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;他们循循善诱的教导和不拘一格的思路给予我无尽的启迪。感谢四年中陪伴在我身边的同学、朋友,感谢他们为我提出的有益的建议和意见,有了他们的支持、鼓励和帮助,我才能充实的度过了四年的学习生活,同窗之间的友谊永远长存!最后再一次感谢所有在毕业设计中曾经帮助过我的良师益友和同学,以及在设计中被我引用或参考的论著的作者。 参考文献: 1夏宇闻.Verilog HDL数字系统设计. 北京航空航天大

19、学出版社 2王诚 吴继华 范丽珍 薛宁 薛小刚.Altera FPGA/CPLD设计.人民邮电出版社 3王建校 危建国.SOPC设计基础与实践.西安电子科技大学出版社 4杨守良.基于FPGA的数字频率计的设计和实现 5张兆莉 蔡永泉 王珏.基于FPGA的数字频率计的设计和实现6 赵雅兴. FPGA原理及应用.天津大学出版社 7 (美)Steve Kilts 孟宪元译. 高级FPFGA设计结构、实现和优化. 机械工 业出版社 8 孟宪元 钱伟康 . FPGA嵌入式系统设计. 电子工业出版社9 宋万杰等. CPLD技术及应用. 西安电子科技大学出版社10 徐志军等. 大规模可编程逻辑器件及其应用.

20、 电子科技大学出版社符录Verilog HDL语言,编程代码如下:CNT1000(1000进制计数器)module CNT1000_v(CLK,q_c,CQ1000);input CLK; /时钟输入output q_c;output CQ1000; /输出reg CQ1000;reg q_c;reg15:0j;always (posedge CLK)begin if(j=16h3e7) /一千的16进制 begin j=16h0; CQ1000=1b0; q_c=1b0; end else begin j=j+16h1; CQ1000=1b1; q_c=1b1; if(j%125=0)q_c

21、=1b0; /CQ1000输出的8倍频率,此次设计中没有用到 end endendmodule CNT50000(50KHz分频器)module CNT50000(CLK,OUT_1kHz);input CLK;output reg OUT_1kHz;reg 16:0j;always (posedge CLK)begin if(j=17hC34F) /50KHz分频的16进制数为C34F begin j=17h0; OUT_1kHz=1b0; end else begin j=j+1b1; OUT_1kHz=1b1; endend endmoduleDFF14bite(14位锁存器)modul

22、e DFF14BITE(D,Q,CLK);input 13:0 D;input CLK;output reg13:0 Q;always (posedge CLK)begin Q0=D0; Q1=D1; Q2=D2; Q3=D3; Q4=D4; Q5=D5; Q6=D6; Q7=D7; Q8=D8; Q9=D9; Q10=D10; Q11=D11; Q12=D12; Q13=D13;endendmoduleCNT14bite(14位计数器)module CNT14BITE(ENABL,CLR,CLK,Q);input ENABL,CLR,CLK;output reg13:0 Q;reg 15:0

23、 cnt;reg 1:0 Q_H2;reg 3:0 Q_H1;reg 3:0 Q_L2;reg 3:0 Q_L1; always (posedge CLK) if(ENABL=1)&(CLR=1) begin cnt=cnt+1b1; if(cnt=3999) begin cnt=16h0; end end else begin cnt=16h0; end always (cnt) begin Q_H2=cnt/8d1000; /对计数的值的处理 Q_H1=(cnt-Q_H2*1000)/8d100; Q_L2=(cnt-Q_H2*1000-Q_H1*100)/8d10; Q_L1=cnt%8

24、d10; Q0=Q_L10; Q1=Q_L11; Q2=Q_L12; Q3=Q_L13; Q4=Q_L20; Q5=Q_L21; Q6=Q_L22; Q7=Q_L23; Q8=Q_H10; Q9=Q_H11; Q10=Q_H12; Q11=Q_H13; Q12=Q_H20; Q13=Q_H21; endendmoduleDISPLY(数码管动态显示)module DIS(CLK, LED1Q_0,LED1Q_1,LED1Q_2,LED1Q_3, LED2Q_0,LED2Q_1,LED2Q_2,LED2Q_3, LED3Q_0,LED3Q_1,LED3Q_2,LED3Q_3, LED4Q_0,L

25、ED4Q_1,LED4Q_2,LED4Q_3, LED5Q_0,LED5Q_1,LED5Q_2,LED5Q_3, LED6Q_0,LED6Q_1,LED6Q_2,LED6Q_3, LED1, LED2, LED3, LED4, LED5, LED6, SEG_A, SEG_B, SEG_C, SEG_D, SEG_E, SEG_F, SEG_G, / SEG_DP );input CLK;input wire LED1Q_0,LED1Q_1,LED1Q_2,LED1Q_3, LED2Q_0,LED2Q_1,LED2Q_2,LED2Q_3, LED3Q_0,LED3Q_1,LED3Q_2,LED

26、3Q_3, LED4Q_0,LED4Q_1,LED4Q_2,LED4Q_3, LED5Q_0,LED5Q_1,LED5Q_2,LED5Q_3, LED6Q_0,LED6Q_1,LED6Q_2,LED6Q_3;output reg LED1, LED2, LED3, LED4, LED5, LED6, SEG_A, SEG_B, SEG_C, SEG_D, SEG_E, SEG_F, SEG_G; / SEG_DP;wire 3:0 LED1Q,LED2Q,LED3Q,LED4Q,LED5Q,LED6Q;reg 3:0 led_xx; /段选reg 6:0 seg_out; /数据输出reg 1

27、:6 led_out; /位选reg 7:0 delay; /延时assign LED1Q0=LED1Q_0,LED1Q1=LED1Q_1; assign LED1Q2=LED1Q_2,LED1Q3=LED1Q_3;assign LED2Q0=LED2Q_0,LED2Q1=LED2Q_1;assign LED2Q2=LED2Q_2,LED2Q3=LED2Q_3;assign LED3Q0=LED3Q_0,LED3Q1=LED3Q_1;assign LED3Q2=LED3Q_2,LED3Q3=LED3Q_3; assign LED4Q0=LED4Q_0,LED4Q1=LED4Q_1; assig

28、n LED4Q2=LED4Q_2,LED4Q3=LED4Q_3;assign LED5Q0=LED5Q_0,LED5Q1=LED5Q_1;assign LED5Q2=LED5Q_2,LED5Q3=LED5Q_3;assign LED6Q0=LED6Q_0,LED6Q1=LED6Q_1; assign LED6Q2=LED6Q_2,LED6Q3=LED6Q_3; always (led_out or LED1Q or LED2Q or LED3Q or LED4Q or LED5Q or LED6Q)begin LED1=led_out1; LED2=led_out2; LED3=led_out

29、3; LED4=led_out4; LED5=led_out5; LED6=led_out6; case (led_out) /led_out作为位选信号,最初赋值为1 6b000001: begin led_xx=LED6Q; end 6b000010: begin led_xx=LED5Q; end 6b000100: begin led_xx=LED4Q; end 6b001000: begin led_xx=LED3Q; end 6b010000: begin led_xx=LED2Q; end 6b100000: begin led_xx=LED1Q; end default: le

30、d_xx=4hf; endcase case (led_xx) /对段码的描述 4h0: seg_out=7b0000001; 4h1: seg_out=7b1001111; 4h2: seg_out=7b0010010; 4h3: seg_out=7b0000110; 4h4: seg_out=7b1001100; 4h5: seg_out=7b0100100; 4h6: seg_out=7b0100000; 4h7: seg_out=7b0001111; 4h8: seg_out=7b0000000; 4h9: seg_out=7b0000100; default: seg_out=7b1001111; endcase SEG_G=seg_out0; SEG_F=seg_out1; SEG_E=seg_out2; SEG_D=seg_out3; SEG_C=seg_out4; SEG_B=seg_out5; SEG_A=seg_out6;endalways (posedge CLK)begin delay2) begin delay=8b0; if(led_out=0)led_out=6h1; /对位选取的值 else begin led_out=led_out1; /位选取由低到高 end endendendmodule

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号