版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于fpga的数字式相位差计设计报告题目名称:基于fpga的数字式相位差设计 目 录 1设计任务及内容32设计方案42.1信号产生及计数时序控制电路模块42.2待测信号脉冲计数电路模块52.3锁存与译码显示控制电路模块53系统硬件设计53.1 fpga硬件连接电路图53.2单片机硬件连接电路图63.3数码显示硬件连接电路图64系统软件设计74.1信号产生及时序控制电路:74.2待测信号计数电路74.3待测信号译码显示电路84.4系统顶级电路图95系统调试95.1信号产生及计数时序控制电路模块的仿真95.2待测信号脉冲计数电路模块的仿真105.2.1十进制加法计数器的仿真105.2.2待测信号脉
2、冲计数器的仿真105.3锁存与译码显示控制电路模块的仿真105.3.1译码显示电路的仿真105.3.2锁存与译码显示控制电路的仿真115.4数字式相位差计整个系统的仿真116课程设计总结11参考文献121设计任务及内容相位差的测量在研究网络特性中具有重要作用,如何快速、精确地测量相位差已成为生产科研中的重要课题。本文介绍了利用fpga技术设计的数字式相位差计。通过对相位差测量原理的研究和各种测量方法的比较,发现利用fpga设计的数字式相位差计操作简单,可读性强,读者可直接读出待测信号的相位差。首先介绍了各种相位差测量的原理及其基本方法,然后详细介绍了以eda技术为基础来设计数字式相位差计,分别
3、通过vhdl语言和原理图两种方式来实现数字式相位差测量,最后通过仿真表面该设计简单可行、精确度高、有实际的应用价值。 数字式相位差计又称电子计数式相位差计,这种方法就是应用电子计数器来测量周期t和两同频正弦波过零点时间差t,依式(2)换算为相位差。对照图所示波形图,讲述该法的基本原理。图中u1、u2为两个同频但具有一定相位差的正弦信号;uc、ud分别为u1、u2经各自的脉冲形成电路输出的尖脉冲信号,两路尖脉冲都出现于正弦波电压从负到正过零点的瞬时;ue为uc尖脉冲信号经触发电路形成宽度等于待测两信号周期t的闸门信号,用它来控制时间闸门;uf为标准频率脉冲(晶振输出经整形形成的窄脉冲,频率为fc
4、)在闸门时间控制信号ue控制下通过闸门加于计数器计数的脉冲,设计数值为n;uq为用uc、ud去触发一个双稳态多谐振荡器形成的反映u1、u2过零点时间宽度为t的另一个闸门信号;uk为标准频率脉冲(频率为fc)在闸门时间信号控制下通过另一个闸门加于另一计数器计数的脉冲,设计数值为n。图1.1 数字式相位差计原理波形图由图所示波形图可见: (1) 将式(1)代入式并将结果代入式(由模拟式直读相位计得),得被测两信号相位差: (2) 以上讲述的数字式相位差计原理在理论上是可行的,但具体电路实现构成仪器是复杂的,操作是不方便的。因为它需要两个闸门时间形成电路,两个计数显示电路,同时,在读得n与n之后还要
5、经式(2)换算为相位差,不能直读。因此,还要用到单片机来进行此换算,因此本设计要用到eda和单片机这两门学科的知识。2设计方案 通过对数字式相位差计原理的阅读和理解,可将其大意作如图2所示电路图。该系统分别由信号产生及计数时序控制电路模块、待测信号脉冲计数电路模块和锁存与译码显示控制电路模块三部分组成。图2.1 电子计数式相位差电路图2.1信号产生及计数时序控制电路模块信号产生及计数时序控制电路主要产生待测信号的相位差数值n、计数允许信号en、清零信号clr和锁存信号lock。2.2待测信号脉冲计数电路模块待测信号脉冲计数电路是对前面已经整理过的待测信号的相位差n进行测量,它由4个十进制加法计
6、数器组成,其中en为计数选通控制信号,clr为计数器清零信号,fin为待测的相位差数值n。在计数器清零信号clr清零后,当计数选通控制信号en有效时,开始对整理好的待测相位差n进行计数。2.3锁存与译码显示控制电路模块锁存与译码显示控制电路用于实现记忆显示,在测量过程中不刷新新的数据,直到计数过程结束后,锁存显示测量结果,并且保存到下一次测量结束。锁存与译码显示电路的功能是对四位bcd码进行锁存,并转换为对应的4组七段码,用于驱动数码管。3系统硬件设计3.1 fpga硬件连接电路图完成主要的相位测量工作,单片机以串行方式和fpga进行通信,发送频率字和相位字给fpga,fpga通过计数,锁存,
7、译码显示等模块完成相位发生功能。 图3.1 fpga引脚图3.2单片机硬件连接电路图单片机在系统中主要用于lcd显示控制,接受fpga送来的数据,并进行处理和转换。 图3.2 单片机引脚图3.3数码显示硬件连接电路图主要完成显示功能,将从fpga中接收的数据输送给lcd显示。图3.3 数码显示电路引脚图4系统软件设计4.1信号产生及时序控制电路:图中aa为异或门,被测两路信号clka 和clkb经过异或门再经过ftctrl分频电路进行2分频,得到的信号作为计数器的使能信号。(如图4.1所示)三路信号clka、clkb、clkc再经过aa1所得到的三路信号分别为rst_en、load和fin,它
8、们分别作为计数器1118的清零端clr、锁存端lock和时钟信号端clock的输入信号。(图4.1.1为图4.1的子图)图4.1 信号产生及时序控制电路图4.1.1 aa 1内部电路4.2待测信号计数电路 该电路由计数器count、锁存电路和译码电路组成。计数器可以用来进行千位计数,该计数器是由四个十进制计数器组合而成的,所以计数的时候最高可以计数计到千位,而我们实际中通常有两位就够了。控制电路的信号来控制计数电路使其计数然后再经过锁存和译码送到数码管。图4.2 待测信号计数电路4.3待测信号译码显示电路该部分电路由锁存和译码电路两部分组成。74374完成锁存功能,它会将计数器计好的数据进行锁
9、存,然后送给74248来进行译码,最后再送给数码管进行显示即可。锁存与译码显示控制电路用于实现记忆显示,在测量过程中不刷新新的数据,直到计数过程结束后,锁存显示测量结果,并且保存到下一次测量结束。锁存与译码显示电路的功能是对四位bcd码进行锁存,并转换为对应的4组七段码,用于驱动数码管。图4.3 待测信号译码显示电路4.4系统顶级电路图 该电路即为设计顶层电路,它可以把n和n的数值计算出来,其中n_h16.0 n_l16.0 n_h6.0 n_l6.0为n的数值,同样,h16.0 l16.0 h6.0 l6.0为n的数值。与七段数码管相连即可看到显示的n和n的数值。图4.4 系统顶级电路图5系
10、统调试 5.1信号产生及计数时序控制电路模块的仿真图5.15.2待测信号脉冲计数电路模块的仿真5.2.1十进制加法计数器的仿真图5.2.15.2.2待测信号脉冲计数器的仿真图5.2.25.3锁存与译码显示控制电路模块的仿真5.3.1译码显示电路的仿真图5.3.15.3.2锁存与译码显示控制电路的仿真图5.3.25.4数字式相位差计整个系统的仿真图5.46课程设计总结经过这段时间的努力,基本完成了此次设计。本设计通过对平均值相位差计原理的分析和程序设计、仿真,用fpga芯片实现了一个高精度、宽频率范围的相位差计。从测量数据可以看出,基于fpga的数字式相位差计的所有控制和功能正常,测试的数据基本
11、符合设计的目标,结合理论、仿真结果、测量数据结果可以看出从理论的角度来看还是存在一定的误差,主要是有以下几个方面造成的:1.在仿真时由于数据的原因标准频率并不等于信号频率的某一值,而是约等于,这其中有一定的误差。2.在做仿真图时对信号的起点、终点有可能把握不是很准确,这也有可能造成误差。3.仿真软件存在着一定的时间差,造成计数有一定的误差。由于该设计原理简单,操作性强,可直接读数,因此在实际应用中很普遍。参考文献1 张永瑞,刘振起等:电子测量技术基础,西安电子科技大学出版社,1994.122 潘松,黄继业编著:eda技术实用教程,科学出版社,2002.103 阎石主编:数字电子技术基础,高等教
12、育出版社,1998.124 曹昕燕,周凤臣等编著:eda技术实验与课程设计,清华大学出版社,2006.055 王彦朋等编:大学生电子设计与应用,中国电力出版社,2007.036 何书森,何华斌编著:电子电路设计速成实用手册,2006.117 王道宪主编:vhdl电路设计技术,国防工业出版社,2004.018 雷伏容编著:vhdl电路设计,清华大学出版社,2006.079 华清远见嵌入式培训中心:fpga应用开发入门与典型实例,工业出版社10 王传新主编:fpga设计基础,工业出版社,2007.0911 罗朝霞:cpld/fpga设计及应用,工业出版社,2007.0712 韩广兴:电子元器件与实
13、用电路基础,电子工业出版社,2008.1013 孟庆海,张洲:vhdl基础及开发实例,西安交通大学出版社,2008.04 附录1.系统硬件原理图:2.程序代码:2.1电路模块vhdl源程序library ieee; -时序控制use ieee.std_logic_1164.all;entity aa1 is port (clka, clkb, clkc: in std_logic; fin, rst_en, and load: out std_logic);end aa1;architecture struc of aa1 iscomponent aa -或门 port (a123, b123
14、: in std_logic; c: out std_logic);end component;component ftctrl -分频 port (clkk: in std_logic; cnt_en: out std_logic);end component;component ftctrl1 -清零,锁存 port (clkk: in std_logic; rst_en1: out std_logic; load1: out std_logic);end component;component aa2 -与门 port (fin1, clkk1: in std_logic; fin2:
15、out std_logic);end component;signal q, w: std_logic;begin u1: aa port map (a123=>clka, b123=>clkb, c=>q); u2: ftctrl port map (clkk=>q,cnt_en=>w); u3:aa2 port map (clkk1=>clkc, fin1=>w, fin2=>fin); u4:ftctrl1 port map (clkk=>q, rst_en1=>rst_en, load1=>load);end struc
16、;2.2待测信号异或门模块的vhdl源程序library ieee; -或门use ieee.std_logic_1164.all;entity aa is port (a123, b123: in std_logic; c :out std_logic);end entity aa;architecture one of aa is begin c<=a123 xor b123;end architecture one;library ieee; -分频use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity
17、ftctrl is port (clkk: in std_logic; cnt_en: out std_logic);end ftctrl;architecture behav of ftctrl issignal div2clk:std_logic;begin process (clkk) begin if clkk'event and clkk='0' then div2clk<= not div2clk; end if; end process; process (clkk, div2clk) begin if clkk='1' and di
18、v2clk='1' then cnt_en<= not clkk; else cnt_en<= clkk; end if; end process;end behav;library ieee; -清零,锁存use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ftctrl1 is port (clkk: in std_logic; rst_en1: out std_logic; load1:out std_logic) ;end ftctrl1;architecture behav o
19、f ftctrl1 issignal div2clk:std_logic;begin process (clkk) begin if clkk'event and clkk ='1' then div2clk <= not div2clk; end if; end process; process (clkk, div2clk) begin if clkk='0' and div2clk='1' then load1<='1' else load1<='0' end if; end pro
20、cess; process (clkk, div2clk) begin if clkk='0' and div2clk='0' then rst_en1<='1' else rst_en1<=0; end if; end process;end behav;library ieee; -与门use ieee.std_logic_1164.all;entity aa2 is port (fin1, clkk1: in std_logic; fin2: out std_logic);end entity aa2;architecture
21、one of aa2 is begin fin2<=fin1 and clkk1;end architecture one;2.3十进制加法计数器的vhdl源程序library ieee; -十进制加法计数use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cb10 is port (clk, en, clr: in std_logic; count10: buffer std_logic_vector (3 downto 0);end cb10;architecture art of cb10 is be
22、gin process (clk,clr,en) begin if clr='1' then count10<="0000" elsif rising_edge (clk) then if (en='1') then if count10="1001" then count10<="0000" else count10<=count10+'1' end if; end if; end if; end process;end art;2.4允许计数控制电路模块的vhdl源
23、程序library ieee; -允许计数控制电路 use ieee.std_logic_1164.all;entity bb1 is port (clka, clkb: in std_logic; fin: out std_logic);end bb1;architecture struc of bb1 iscomponent aa port (a123, b123: in std_logic; c: out std_logic);end component;component ftctrl port (clkk: in std_logic; cnt_en: out std_logic);e
24、nd component;signal q: std_logic;begin u1: aa port map (a123=>clka,b123=>clkb , c=>q); u2: ftctrl port map (clkk=>q,cnt_en=>fin);end struc;2.5待测信号脉冲计数器的vhdl源程序library ieee; -百进制计数use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count is port (clk, en, clr: in std_log
25、ic; qa1, qb1, qc1, qd1: buffer std_logic_vector (3 downto 0);end;architecture art of count is component cb10 port (clk, en, clr: in std_logic; count10: buffer std_logic_vector (3 downto 0);end component;signal clk2, clk3, clk4:std_logic;begin clk2<=not qa1(3); clk3<=not qb1(3); clk4<=not qc
26、1(3); u1:cb10 port map (clk, en, clr, qa1); u2:cb10 port map (clk2, en, clr, qb1); u3:cb10 port map (clk3, en, clr, qc1); u4:cb10 port map (clk4, en, clr, qd1);end art;2.6译码显示电路的vhdl源程序library ieee; -译码显示电路use ieee.std_logic_1164.all;entity bcd7 is port (bcd: in std_logic_vector (3 downto 0); led: o
27、ut std_logic_vector (6 downto 0);end;architecture art of bcd7 is begin led<="0111111" when bcd="0000" else "0000110" when bcd="0001" else "1011011" when bcd="0010" else "1001111" when bcd="0011" else "1100110&quo
28、t; when bcd="0100" else "1101101" when bcd="0101" else "1111101" when bcd="0110" else "0000111" when bcd="0111" else "1111111" when bcd="1000" else "1101111" when bcd="1001" else "00000
29、00"end art;2.7锁存与译码显示控制电路模块的vhdl源程序library ieee; -锁存与译码控制电路use ieee.std_logic_1164.all;entity lock is port (lock: in std_logic; qa, qb, qc, qd: in std_logic_vector(3 downto 0); leda, ledb, ledc, ledd: out std_logic_vector(6 downto 0);end;architecture art of lock issignal qal, qbl, qcl, qdl: std
30、_logic_vector(3 downto 0);component bcd7 port (bcd: in std_logic_vector (3 downto 0); led: out std_logic_vector (6 downto 0);end component;begin process (lock) begin if(lock'event and lock='1')then qal<=qa; qbl<=qb; qcl<=qc; qdl<=qd; end if; end process;u1:bcd7 port map (qal, leda);u2:bcd7 port map (qbl, ledb);u3:bcd7 port map (qcl, ledc);u4:bcd7 port map (qdl, ledd);end art; 2.8顶层电路的vhdl源程序library ieee; -顶层电路use ieee.std_logic_1164.all;entity pinl is port (clk1, clk2, clk3: in std_lo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心血管疾病研究中的空白识别策略
- 心血管介入器械3D打印的精准质量控制
- 心脏移植供体分配中的紧急状态决策机制
- 心脏病AI预测模型的算法偏见与修正
- 微创椎间盘切除术术后患者依从性对远期疗效的影响
- 微创技术推广中的媒体叙事与公众人文认知
- 微创三叉神经微血管减压术的术后随访体系建设
- 2025年航空货运司机合作协议
- 建筑工人慢性软组织劳损痛点注射
- 康复患者康复过程中的心理干预策略
- 《医保支付资格管理》培训考核题库及答案
- (2025年)福建能化集团招聘笔试题附答案
- 有本领的劳动者课件
- 计调年终总结汇报
- 江苏省专升本2025年食品科学与工程食品工艺学试卷(含答案)
- 具身智能+物流智能仓储解决方案分析报告
- 2025年西藏公开遴选公务员笔试试题及答案解析(综合类)
- 人行道维修施工方案
- TOP TOY潮玩集合品牌盲盒营销现状及对策研究
- 第16课 祖国我为您自豪(教学课件)小学二年级上册 统编版《道德与法治》新教材
- 小学科学新教科版三年级上册全册教案(2025秋新版)
评论
0/150
提交评论