




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
信息工程学院电子测量与仪器检测实验报告 题目:等精度同步测频 班级: 学号: 姓名: 老师: 2012年6月4日实验二 等精度同步测频一、实验目的1、 掌握等精度同步测频的工作原理。2、 掌握VHDL和Verilog硬件描述语言的用法。3、 掌握用硬件描述语言实现自己设计方案的方法。4、 了解Quartus II或是Maxplus II的使用方法。5、 学习用仿真工具调试硬件模块的方法以及用单片机访问FPGA的方法。二、实验仪器1、PC机一台。2、函数发生器一台。3、FPGA开发板一块。4、JTAG下载线一条。5、安装Quartus II 或是Maxplus II软件。三、实验电路及原理说明1.实验原理图图2-1 多周期同步测频的原理方框图2.工作波形图图2-2 多周期同步测频的工作波形图3.工作原理 1、工作原理图2-1给出了多周期同步测频率的原理方框图,图2-2是对应的工作波形图。其工作过程是:单片机预置一定宽度(如1s)的闸门脉冲信号,加至D触发器以形成同步闸门信号T;被测信号频率分两路加入,一路加至D触发器作为CP时钟,和预置闸门一起作用,在Q端形成同步闸门见图2-2中T的波形,并分别加到主门1和主门2上,将主门1、2同时打开;这时,被测频率通过主门1进入计数器1,对进入的周期数进行计数,得计数值;同时,晶振标准频率通过主门2进入计数器,得计数值,其波形如图2-2所示,由图可得:因此: 2、误差分析 由以上工作过程和波形图可以看出,对被测信号的计数是与闸门同步的,故不存在量化()误差。这样,用该计数器测频,不管频率高低,其精度是相同的。这时,误差仅发生在计数器2对的计数值上,因为主门2与之间并无同步关系,故仍存在量化误差。不过,通常,故误差相对小得多。多周期同步计数器测频的误差为:,N为T时间内晶振震荡的次数。 3、系统整体框图图2-3 等精度测频的系统总体框图 4、框图解释:1、波形变换器用来将待测正弦波变换成同频率的方波,以便于后面的数字电路的处理,通常使用比较器或是施密特触发器来完成。2、等精度测频器即是我们设计的核心单元,主要用来数出待测信号以及CLK_50M在一秒的定时内震荡的次数;里面包括两个32位的寄存器,这两个寄存器共用一组地址、读写、片选、数据总线,CPU可以通过这组总线来访问两个寄存器,从而便于CPU读取并计算出待测信号的频率。3、CPU用来读取“等精度测频”模块中的两个计数值,再利用这两个计数值推算出待测信号的频率,并获取按键指令以及控制显示设备用来显示结果。4、按键用来接收用户的输入,每按一个键就会产生一个中断,使CPU转而执行相应的中断服务程序,从而完成相应的工作。5、显示设备可由led或是12864等简单、便宜的显示设备组成,通过CPU的控制把测得的数据(两个计数其中的值或是被测信号的频率)显示出来。4)采用Verilog或者VHDL实现等精度测频的模块等精度测频模块是本实验的核心模块,也是我们实验的主要内容,要求同学们用VHDL或是Verilog语言中的至少一种写出其功能,并用仿真工具进行时序仿真,验证模块的正确性。有条件的可以采用任一款式的单片机访问该等精度的测频模块,直接使用函数发生器产生的方波作为待测信号,从而验证该模块的正确性。等精度测频模块是由三个更小的子模块组成的,分别是:异步秒脉冲模块、同步秒脉冲模块、计数器模块。这三个模块的符号图如下所示:Zhangfengying_Asyn_Sec_pulse_Module图2-4 异步秒脉冲模块Zhangfengying_Syn_Sec_pulse_Module图2-5同步秒脉冲模块Zhangfengying_Counters图2-6 计数器模块三个模块作用简介 1、异步秒脉冲模块:用来产生接近一秒的正电平,系统正是通过计算这一秒内待测信号的振动次数以及CLK_50M的振动次数,再通过这两个次数算出待测信号的频率的。之所以说是“异步秒脉冲”,这里的“异步”是相对于待测信号的步调的,也就是说,不与待测信号的上升沿或是下降沿同步,那么就是“异步的”。2、同步秒脉冲模块:根据异步秒脉冲模块产生的与待测信号同步的接近一秒的正电平,这里说的“同步”是相对于待测信号的,也就是说新生成的同步秒脉冲的起始时刻为待测信号的某一个上升沿(或下降沿),结束时刻也是待测信号的某一个上升沿(或下降沿)。3、计数器模块:用来数出同步秒脉冲的时间内CLK_50M震动的次数,比如说N1,同时也可以数出同步秒脉冲时间内待测信号的振动次数,比如说N2,那么待测信号的频率将会是:N2/N150000000。该模块的内部有两个计数器,分别是CNTR1_CLK50M和CNTR2_SigX,其中前者对50M的CLK进行计数,后者对待测信号X进行计数,具体程序见后面附录Counters.V中的内容。一秒结束后计数的最终结果存放在reg_CLK50M_N和reg_SigX_N中。该模块有4个以CPU打头的信号线:CPU_CS,CPU_RD,CPU_Addr和CPU_RD_Data,它们正好和任何一款CPU的片选、读、地址和读数据总线连接起来,用来读取reg_CLK50M_N和reg_SigX_N这两个寄存器中的数据。当CPU读出这两个寄存器中的数据之后就可以统计简单的计算得到待测信号的频率,并显示之。具体程序见后面附录Counters.V中的内容。 三个模块之间的连接上文所讲的三个模块必须通过的正确的连接,产生一个更大的顶层模块才能完成等精度测频的任务。具体连接方式见附录。四、实验过程 1、在电脑上安装Quartus II或Maxplus II,最好是安装Quartus II。 2、读懂本文所附的参考程序,在Quartus II中为每一个模块建立仿真激励文件,分别给三个子模块仿真,再对顶层模块进行仿真。 3*、将Verilog代码改写为VHDL的代码。 4*、有条件的同学可以使用开发板做成模块,再用单片机访问。五、实验结果分析 Clk=50M,当输入的信号为1M时的仿真波形:从图中可以看出reg_CLK50M_N=00000000000000000000000000110010即50 reg_SigX_N=0000000000000000000000000000001即1计算可得输入信号的频率:(reg_SigX_N/ reg_CLK50M_N)*50000000.0=2500000.0 (HZ)与实际输入相同。 Clk=50M,当输入的信号为5M时的仿真波形:从图中可以看出reg_CLK50M_N=00000000000000000000000000000110即10 reg_SigX_N =0000000000000000000000000000001即1计算可得输入信号的频率:(reg_SigX_N/ reg_CLK50M_N)*50000000.0=5000000.0 (HZ)与实际输入相同。六、思考题1、为什么等精度测频比电子测量与仪器书上讲的“高频宜测频,低频宜侧周”要优越?答:电子测量与仪器书上讲的“高频宜测频,低频宜侧周”,可能会多测或少测一个脉冲这样的话,待测信号频率越高多测一个或少测一个的影响不大但是当待测频率较低时这种误差则是致命的。而等精度测频法使测试的闸门脉冲与待测信号完成了同步这样就避免了多测一个和少测一个的误差,因此对几乎所有频率是一样的。2、 等精度测频原理中为什么能实现“等精度”,这个“等精度”是相对于哪个信号而言的“等精度”?答:是相对于待测信号的等精度。7、 程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY _Asyn_Sec_Pulse_Module IS PORT ( CLK_50M : in std_logic; Asyn_Sec_Pulse : out std_logic);END _Asyn_Sec_Pulse_Module;ARCHITECTURE translated OF _Asyn_Sec_Pulse_Module IS SIGNAL cnt : std_logic_vector(31 DOWNTO 0); SIGNAL reg_Asyn_Sec_Pulse : std_logic; SIGNAL Asyn_Sec_Pulse_xhdl1 : std_logic;BEGIN Asyn_Sec_Pulse = Asyn_Sec_Pulse_xhdl1; PROCESS BEGIN WAIT UNTIL (CLK_50MEVENT AND CLK_50M = 1); IF (cnt 00000010111110101111000010000000) THEN cnt = cnt + 00000000000000000000000000000001; ELSE cnt = 00000000000000000000000000000000; reg_Asyn_Sec_Pulse = NOT reg_Asyn_Sec_Pulse; END IF; END PROCESS; Asyn_Sec_Pulse_xhdl1 = reg_Asyn_Sec_Pulse ;END Behavioral;library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY _Syn_Sec_Pulse_Module IS PORT ( Sig_X_In : IN std_logic; Asyn_Sec_Pulse_In : IN std_logic; Syn_Sec_Pulse_Out : OUT std_logic);END Syn_Sec_Pulse_Module;ARCHITECTURE translated OF Syn_Sec_Pulse_Module IS SIGNAL reg_Syn_Sec_Pulse_Out : std_logic; SIGNAL Syn_Sec_Pulse_Out_xhdl1 : std_logic;BEGIN Syn_Sec_Pulse_Out = Syn_Sec_Pulse_Out_xhdl1; PROCESS BEGIN WAIT UNTIL (Sig_X_InEVENT AND Sig_X_In = 1); IF (Asyn_Sec_Pulse_In = 1) THEN reg_Syn_Sec_Pulse_Out = 1; ELSE reg_Syn_Sec_Pulse_Out = 0; END IF; END PROCESS; Syn_Sec_Pulse_Out_xhdl1 = reg_Syn_Sec_Pulse_Out ;END Behavioral;library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY zhangfengying _Counters IS PORT( Sig_X_In : IN std_logic; CLK_50M : IN std_logic; Syn_Sec_Pulse_In :IN std_logic; CPU_CS :IN std_logic; CPU_RD :IN std_logic; CPU_Addr :IN std_logic; CPU_RD_Data :OUT std_logic _vector(31 DOWNTO 0);END Counters;ARCHITECTURE trandslated OF _Counters IS SIGNAL reg_CPU_RD_Data : std_logic _vector(31 DOWNTO 0); SIGNAL reg_CLK50M_N : std_logic _vector(31 DOWNTO 0); SIGNAL reg_SigX_N : std_logic _vector(31 DOWNTO 0); SIGNAL CNTR1_CLK50M : std_logic _vector(31 DOWNTO 0); SIGNAL CNTR2_SigX : std_logic _vector(31 DOWNTO 0); SIGNAL CPU_RD_Data_xhdl1 : std_logic _vector(31 DOWNTO 0);BEGIN CPU_RD_Data = CPU_RD_Data_xhdl1; PROCESS VARIABLE xhdl_initial : BOOLENA :=TRUE; BEGIN IF(xhdl_initial)THEN CNTR1_CLK50M =00000000000000000000000000000000; CNTR2_SigX = 00000000000000000000000000000000; xhdl_initial :=FALSE; ELSE WAIT; END IF; END PROCESS; PROCESS BEGIN WAIT UNTTL (Syn_Sec_Pulse_INEVENT AND Syn_Sec_Pulse_In=0) OR (CLK50MEVENT AND CLK50M=1); IF (NOT Syn_Sec_Pluse_In = 1)THEN CNTR1_CLK50M = 00000000000000000000000000000000; ELSE CNTR1_CLK50M = CNTR1_CLK50M+00000000000000000000000000000001; END IF; END PROCESS; PROCESS BEGIN WAIT_UNTIL (Syn_Sec_Pulse_InEVENT AND Syn_Sec_Pulse_In = 0); reg_CLK50M_N = CNTR1_CLK50M; reg_SigX_N = CNTR2_SigX; END PROCESS; PROCESS BEGIN WAIT_UNTIL (CLK50M EVENT AND CLK50M = 1); IF(CPU_CS = 1) AND (CPU_RD = 1)THEN IF(CPU_Addr = 0)THEN reg_CPU_RD_Data = reg_CLK50M_N; ELSE reg_CPU_RD_Data = reg_SigX_N ; END IF; ELSE reg_CPU_RD_Data = ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ; END IF; END PROCESS; CPU_RD_Data_xhdl1 = reg_CPU_RD_Data ;ENDBehavioral;library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY _Test_Freq_Metor_Top IS PORT ( Sig_X_In : IN std_logic; CLK_50M : IN std_logic; CPU_CS : IN std_logic; CPU_RD : IN std_logic; CPU_Addr : IN std_logic; CPU_RD_Data : OUT std_logic _vector(31 DOWNTO 0); Test_Asyn_Sec_Pulse : OUT std_logic; Test_Syn_Sec_Pulse : OUT std_logic);END _Test_Freq_Metor_Top;ARCHITECTURE translated OF _Test_Freq_Metor_Top IS SIGNAL Asyn_Sec_Pulse : std_logic; SIGNAL Syn_Sec_Pulse : std_logic; SIGNAL CPU_RD_Data_xhdl1 : std_logic _vector(31 DOWNTO 0); SIGNAL Test_Asyn_Sec_Pulse_xhdl2: std_logic; SIGNAL Test_Syn_Sec_Pulse_xhdl3 : std_logic; BEGIN CPU_RD_Data = CPU_RD_Data_xhdl1; Test_Asyn_Sec_Pulse = Test_Asyn_Sec_Pulse_xhdl2; Test_Syn_Sec_Pulse CLK_50M, Asyn_Sec_Pulse = Asyn_Sec_Pulse); U2 : _Syn_Sec_Pulse_Module PORT MAP ( Sig_X_In = Sig_X_In, Asyn_Sec_Pulse_In = Asyn_Sec_Pulse, Syn_Sec_Pulse_Out = Syn_Sec_Pulse); U3 : _Counters PORT MAP ( Sig_X_In = Sig_X_In, CLK_50M = CLK_50M, Syn_Sec_Pulse_In = Syn_Sec_Pulse, CPU_CS = CPU_CS, CPU_RD = CPU_RD, CPU_Addr = CPU_Addr, CPU_RD_Data = CPU_RD_Data_xhdl1); Test_Asyn_Sec_Pulse_xhdl2 = Asyn_Sec_Pulse ; Test_Syn_Sec_Pulse_xhdl3 Sig_X_In, CLK_50M = CLK_50M, CPU_CS = CPU_CS, CPU_RD = CPU_RD, CPU_Addr = CPU_Addr, CPU_RD_Data = CPU_RD_Data, Test_Asyn_Sec_Pulse = Test_Asyn_Sec_Pulse, Test_Syn_Sec_Pulse = Test_Syn_Sec_Pulse); PROCESS VARIABLE xh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年下半年新疆兵团招聘事业单位工作人员(2398人)备考考试题库附答案解析
- 2025年赣州市南康区初中学校公开选调区内教师备考考试题库附答案解析
- 业务合作协议细节书暨附件
- 2025年星巴克咖啡文化体验营销市场调研报告
- 2025年新零售全渠道营销模式线上线下融合用户体验优化报告
- 农业种植用水使用合作协议书
- 商业场所租赁合同及物业设施维护责任说明
- 投资咨询服务合同标准范本
- XX高值医用耗材有限公司2022环境、社会与公司治理综合报告
- 2025年高压电工(高压试验技术操作)考试冲刺试卷及答案解析
- 采购进口生蚝合同协议书
- 鼓号队培训课件内容
- 液体外渗的预防与处理 2
- 2025山西吕梁文水县公办幼儿园幼儿业务辅助人员招聘120人笔试参考题库附答案解析
- 2024年云南航空产业投资集团招聘考试真题
- 柚子树栽培技术
- 蓝莓种植加工一体化发展项目可行性研究报告写作模板-申批备案
- 2025年秋季新学期教学工作会议校长讲话:一心一意抓质量一点一滴见成效一步一脚印做教学
- 上腔静脉综合征护理查房
- 安徽省2025年公需科目培训测验答案(科目一)
- 2025年新退休返聘人员协议书
评论
0/150
提交评论