首页 数字频率计

数字频率计

举报
开通vip

数字频率计nullnull基于EasyFPGA030 的简易频率计设计指导老师:申辉 组员:饶凯、雷娟、周智、王楠、陈怡龙、张树龙 软件开发环境:Libero IDE v8.5软件开发环境:Libero IDE v8.5硬件平台:EasyFPGA030null目录1 需求分析2 基本原理3 整体框架本文目录结构4 总结需求分析本实验要求设计一个简易的频率计,实现对标准的方波信号进行频率测量,并把测量的结果送到8 位的数码管显示,所要求测量范围是1Hz~99999999Hz。需求分析基本原理通过对1 秒钟之内输入的方波进行计数...

数字频率计
nullnull基于EasyFPGA030 的简易频率计设计指导老师:申辉 组员:饶凯、雷娟、周智、王楠、陈怡龙、张树龙 软件开发环境:Libero IDE v8.5软件开发环境:Libero IDE v8.5硬件平台:EasyFPGA030null目录1 需求分析2 基本原理3 整体框架本文目录结构4 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 需求分析本实验要求设计一个简易的频率计,实现对 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的方波信号进行频率测量,并把测量的结果送到8 位的数码管显示,所要求测量范围是1Hz~99999999Hz。需求分析基本原理通过对1 秒钟之内输入的方波进行计数,把所得数据保存在计数器里,经过译码器处理之后,然后送往数码管显示。 这里采用的 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 是在采样时钟的上升沿开始计数,然后在下一个上升沿把计数器里的数据送往数码管,并且把计数器清零,让其重新计数。基本原理null被测频率 整体框架null 时钟分频模块 功能:时钟分频(clk_div)模块主要是为了对各个模块提供一定频率的时钟信号,例如计数器和译码器里要用到1 秒的时钟信号,扫描输出模块要用到2 毫秒的方波信号,就是由时钟分频模块提供的。 主要思想:将EasyFPGA030开发板提供的48MHz的系统时钟分频,利用的是fpga语言,分频成个个模块所需要的时钟节拍。 主要代码: nullalways@(posedge sysclk or negedge reset) begin if(reset==1'b0) begin clk_2ms<=0; count_2ms<=0; end else if(count_2ms==16'd47999) begin count_2ms<=0; clk_2ms<=~clk_2ms; end else count_2ms<=count_2ms+1'b1; end null 计数器模块 功能描述:统计闸门电路中信号上升沿的 个数,存储在寄存器中供后来译码使用 并具有清零功能 扩展时 可以用计数结果 比如选择档位 判断超出范围等 主要代码: nullmodule count(reset,count_in,count_out); input count_in,reset; output count_out; reg[19:0] count_out; always @(posedge count_in or negedge reset) begin if(!reset) count_out <= 0; else count_out = count_out+1; end endmodule null 译码器模块 功能:将二进制编码转化为十进制的bcd码。在时钟控制下分时输出各位的数。 方法:1,将二进制的最高位取出放到bcd码的最低位,二进制左移一位 2,把bcd 码从低位到高位按四位一组划分开,判断bcd码中每四位的值是否大于等于5,如果大于五加3, 3,bcd码左移一位,重复1,2直到二进制左移次数等于位宽。 原理:十进制为逢十进一,把二进制划分为四位一组的二进制,可以看作是十六进制,十六进制逢十六进一,如果不进行2操作,二进制进过上述操作后和原值一致保持不变。现在要将其转变为bcd码,就要把原来的逢十六进一变为逢十进一,左移为×2,所以如果一组四位二进制大于等于5时下次移位时就要使其进位,故给其加3,原数大于等于5时,加3后大于等于8,移位后就可以产生进位。保证了bcd和二进制的数值一致。 主要代码: nullalways@(posedge clk) begin for(i=19;i>=0;i=i-1) begin if(i==19) bcd[23:0]=23'b0; bcd[0]=out[i]; if(bcd[3:0]>=3'd5) bcd[3:0]=bcd[3:0]+3'd3; if(bcd[7:4]>=3'd5) bcd[7:4]=bcd[7:4]+3'd3; if(bcd[11:8]>=3'd5) bcd[11:8]=bcd[11:8]+3'd3; if(bcd[15:12]>=3'd5) bcd[15:12]=bcd[15:12]+3'd3; if(bcd[19:16]>=3'd5) bcd[19:16]=bcd[3:0]+3'd3; if(bcd[23:20]>=3'd5) bcd[23:20]=bcd[23:20]+3'd3; bcd[23:0]=bcd[23:0]<<1; end end endmodulenull 扫描模块 功能:对译码译出的数据进行扫描输出 原理图: 原理描述原理描述采用八个数码管动态扫描方式轮流点亮八个数码管显示其数据。 数码管共阳式:阳极连在一起,阴极接地,0点亮 数码管共阴式:阴极连在一起,阳极接地,1点亮 理由:由于一个数码管有abcdefg七段(我们现在还未考虑小数点问题),就需要七根数据线,那么八个数码管就需要56根数据线,采用动态扫描能够节省数据线的使用。如果频率足够快,那么由于人眼睛的短暂停留特性(人眼的视觉暂留时间是0.1-0.4秒左右),感觉所有的数码管同时点亮。 module countdiv(clk,reset,num,led); parameter temp0 = 3'b000, temp1 = 3'b001, temp2 = 3'b010, temp3 = 3'b011, temp4 = 3'b100, temp5 = 3'b101, temp6 = 3'b110, temp7 = 3'b111;always语句控制(1): case(temp) temp0:temp<=temp1; temp1:temp<=temp2; temp2:temp<=temp3; temp3:temp<=temp4; temp4:temp<=temp5; temp5:temp<=temp6; temp6:temp<=temp7; temp7:temp<=temp0; default:temp<=temp0;always语句控制(2): case(temp) temp0: begin led = 8'b1111_1110; number = num; end temp1: begin led = 8'b1111_1101; number = num; end ...... endmodule always语句控制(2): case(temp) temp0: begin led = 8'b1111_1110; number = num; end temp1: begin led = 8'b1111_1101; number = num; end ...... endmodule 状态机转换图状态机转换图个人总结: 1.case 语句中忘记敲end了,导致错误发生,找了好久才找到,建议在有begin 和end同时出现的情况下(initial中有两条以上的语句,always,case中有两条以上的语句时),一次性敲完begin end; 2.在 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 写程序时应该注意,边沿触发时一般使用非阻塞语句,电平触发时一般使用阻塞语句;个人总结: 1.case 语句中忘记敲end了,导致错误发生,找了好久才找到,建议在有begin 和end同时出现的情况下(initial中有两条以上的语句,always,case中有两条以上的语句时),一次性敲完begin end; 2.在书写程序时应该注意,边沿触发时一般使用非阻塞语句,电平触发时一般使用阻塞语句; 3. 在实际电路中,组合逻辑电路和时序 逻辑电路是分开的,所以学长建议使状态机转换来写代码 4.树立思想:设计电路从顶层到底层,书写电路从底层到顶层;在写一个模块时应该自己先想清楚需要哪些输入控制哪些输出,输出又是如何连接起来控制外部设备的,然后才去书写模块模拟电路,总之在有 一个明确的思路下才去写,而不是根据仿真的结果一遍遍去改程序 3. 在实际电路中,组合逻辑电路和时序 逻辑电路是分开的,所以学长建议使状态机转换来写代码 4.树立思想:设计电路从顶层到底层,书写电路从底层到顶层;在写一个模块时应该自己先想清楚需要哪些输入控制哪些输出,输出又是如何连接起来控制外部设备的,然后才去书写模块模拟电路,总之在有 一个明确的思路下才去写,而不是根据仿真的结果一遍遍去改程序null 信号源模块 功能:作为被测信号为频率计提供一个输入频率信号 要点:实现对给定信号的各种分频 实现:用另一块EasyFPGA030开发板(本开发板上采用了48MHz 的有源晶振)做一个简易的信号源,对48MHz的系统时钟分频,输出频率分别为1hz、2hz、500hz、10khz、100khz、500khz、3Mhz、6Mhz、12Mhz、24Mhz(输出引脚依次为开发块上的29~20引脚)的方波信号 主要代码: nullalways@(posedge clk or negedge reset) begin if(reset==1'b0) begin fout1=0; fout2=0; fout5=0; count=0; count5=0; end if(clk) fout1=~fout1; if(count%2==0) fout2=~fout2; if(count5==48) begin fout5=~fout5; count5=0; end count=count+1; count5=count5+1; end endmodulenull 残留问题 闸门电路前端衰减/放大、整形外围电路的实现; 测量时容错功能; 不同量程范围的确定; 人机交换; “超范围”LED提示出错 null 最终实物图 null谢谢
本文档为【数字频率计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_849322
暂无简介~
格式:ppt
大小:1MB
软件:PowerPoint
页数:0
分类:工学
上传时间:2011-04-05
浏览量:20