《企业学习Ⅲ(研发实习)报告》_第1页
《企业学习Ⅲ(研发实习)报告》_第2页
《企业学习Ⅲ(研发实习)报告》_第3页
《企业学习Ⅲ(研发实习)报告》_第4页
《企业学习Ⅲ(研发实习)报告》_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、电气信息工程学院企业学习-2(研发实习)报告专 业 通信工程 班 级 通信(1) 班 姓 名 仇月敏 章恒 学 号 12313123 12313117 指导教师 黄 阳 2016年 1 月 14 日任务书基于FPGA的数字信号源电路设计与实现一、任务熟悉通信系统中常用数字信号类型和用途,了解通信原理实验过程中所需要的信号特性以及生成原理和产生方法;要求设计一款电路实现常用数字信号的产生,并通过FPGA芯片进行硬件实现。系统框图下图所示。图1-1系统框图二、要求1基本要求(或指标)1伪随机码:F=2Kb/s. F=32Kb/s2方波频率:4.096MHz,2.048MHz,1.024MHz,32

2、KHz,16KHz,8KHz,2KHz,1KHz。3矩形脉冲:F=8KHz.F=16KHz。程序下载到FPGA芯片。4通过拨码开关选择输出。5通过信号参数通过液晶屏实时显示。2扩展要求(选做) 1.设计制作仪器外壳,要求美观,方便操作。摘 要数字信号源是数字信号处理中不可缺少的调试设备,在生产生活中的应用非常广泛。本文所设计的内容就是基于Altera公司的现场可编程门阵列(FPGA)实现数字信号发生器的设计,FPGA具有密度高,功耗低,体积小,可靠性高等特点,设计时可以不必过多考虑具体硬件连接;本设计中应用VHDL硬件描述语言进行描述,使该数字信号源可以产生伪随机码,方波,矩形脉冲三个独立的波

3、形,并能对所产生的三种波形的频率进行调节。一、 设计方案论证分析1.系统结构与工作原理在本设计中,利用FPGA,采用EDA(Electronic Design Automation)中自顶向下(top-to-down)的设计方法,选用基于相位累加器的直接数字合成/ DDS技术来完成数字信号发生器各功能模块的设计。DDS这种结构主要由相位累加器、 相位调制器、 波形 ROM 查找表。其中相位累加器、 相位调制器、 波形 ROM 查找表是 DDS 结构中的数字部分 ,由于具有数控频率合成的功能 ,又合称为 NCO。它的工作原理是:将要产生的波形数据存入波形存储器 ,然后在参形存储器的地址 ,将读出

4、的波形数据经D/A转换为相应的模拟电压信号。本研究的重点就是用VHDL来实现DDS的功能 ,能够达到高精度的输出 ,同时标准波形数据生成存放在 ROM 中 ,可以简化运算过程 ,提高运算速度 ,加快反应时间。本设计主要通过VHDL语言实现频率控制、波形控制、 波形数据的提取、 波形的产生工作。其中 ,波形数据运用VHDL语言编写 ,整个试验3种信号的产生都是采用分频原理。控制部分主要采用产生高低电平的拨码开关控制。程序下载到 FPGA 上实现。并通过Altera公司QuartusII9.0软件进行波形的仿真,从而完成整个设计。考时钟的作用下 ,对输入的频率数据进行累加 ,并且将累加器的输出一部

5、分作为读取波(1)分频原理所谓“分频”,就是把输入信号的频率变成成倍数地低于输入频率的输出信号。文献资料上所谓用计数器的方法做“分频器”的方法,只是众多方法中的一种。它的原理是:把输入的信号作为计数脉冲,由于计数器的输出端口是按一定规律输出脉冲的,所以对不同的端口输出的信号脉冲,就可以看作是对输入信号的”分频“。至于分频频率是怎样的,由选用的计数器所决定。如果是十进制的计数器那就是十分频,如果是二进制的计数器那就是二分频,还有四进制、八进制、十六进制等等。本设计的所有方波都是采用二分频,矩形脉冲和伪随机码是用分频的方波频率作为输入时钟脉冲产生。而分频分为很多种,比如偶数分频,奇数分频,小数分频

6、等等。这次试验主要运用了偶数分频,偶数倍分频通过计数器计数是很容易实现的。如进行N倍偶数分频,那么可以通过由待分频的时钟触发计数器计数,当计数器从0计数到N/2-1时输出时钟进行翻转,并给计数器一个复位信号,使得下一个时钟从零开始计数。以此循环下去。这种方法可以实现任意的偶数分频。本次试验的方波频率产生都是用偶数分频原理产生,伪随机码和矩形脉冲也是用分频的方波作为输入时钟周期来产生。(2)伪随机码原理伪随机序列又称m序列或伪噪声序列,它是有带线性反馈的移位寄存器产生的周期最长的一种序列。它是一种可以可以预先确定,并且可以重复产生和复制,又具有随机统计特性的2进制码序列。伪随机序列所具有的的主要

7、特点有以下4点:(1) 每个周期中,“1”码出现2n次,“0”码出现2n-1次,即0和1出现的概率几乎相等。(2) m序列中连续出现1的数目是n,连续出现0的数目是n-1。(3) 分布无规律,具有和白噪声相似的伪随机特性。(4) 移位相加特性,即m序列和它自身的移位序列模2相加所得的序列仍是该m序列的某个位移序列。称f(x)为特征多项式。(3)矩形脉冲原理矩形脉冲发生器和方波的区别在于,方波的高电平和低电平所占时间相等(即占空比为50%),而矩形脉冲则不等。由于对矩形脉冲的速率有要求,所以在程序中用分频计数的方法来实现矩形脉冲。(4)选择输出实现Y<=c1 when DD="1

8、110" else c2 when DD="1101" else c3 when DD="1100" else c4 when DD="1011" else c5 when DD="1010" else c6 when DD="1001" else c7 when DD="1000" else c8 when DD="0111" else c9 when DD="0110" else c10 when DD="010

9、1" else c11 when DD="0100" else c12 when DD="0011" else 'Z'输出选择用四位拨码开关。2.方案比较与选择图1-2改进的系统框图在六周实训中,把由FPGA控制LCD实时显示换成了由52单片机来控制显示部分。由于分频的时候有奇数和偶数分频,所以本来将分频分成了奇数和偶数分频,后来发现在实际实验中,输出的方波脉冲占空比不一定要50%。在分频时,本来决定把用倍频器来把信号频率慢慢加上去,后来意识到可以直接用分频,就用了分频。二、 理论分析与计算1.伪随机码的设计计算任务与要求:伪随

10、机码:F=2Kb/s. F=32Kb/s方案如下:伪随机序列长度为,首先要找到长度为255的伪随机序列特征多项式,确定关系式。2.方波频率的设计计算任务与要求:方波频率:4.096MHz,2.048MHz,1.024MHz,32KHz,16KHz,8KHz,2KHz,1KHz。方案如下:由于FPGA的晶振为50MHz,所以产生的所有频率都可以用50MHz分频而来。,。所以分频程序可以分别为12,、25、50、1562、3125、6250、25000、50000分频。3.矩形脉冲的设计计算(1) F=8KHz任务与要求:设计VHDL模块,输入模块的时钟信号为50Mhz输出如以下参数的方波信号,频

11、率为8KHZ,周期为125us,占空比为4/5的方波信号。方案如下:输入的信号周期 T=1/50M=0.02us,要输出125us的信号就需要计数器来实现,并且占空比为4/5,那么输出信号的低频范围: T1=125/5*4=100us;需要计数次数为 N1=100/0.02=5000;输出信号的高频范围:T2=125/5=25us;需要计数次数为 N2=25/0.02=1250;因此,当计数在n<1250时输出高频信号,当1250<n<62时输入低频信号,然后计数清零。(2) F=16KHz任务与要求:设计VHDL模块,输入模块的时钟信号为50Mhz输出如以下参数的方波信号,

12、频率为16KHZ,周期为62.5us,占空比为4/5的方波信号。方案如下:输入的信号周期 T=1/50M=0.02us,要输出62.5us的信号就需要计数器来实现,并且占空比为4/5,那么输出信号的低频范围: T1=62.5/5*4=50us;需要计数次数为 N1=50/0.02=2500;输出信号的高频范围:T2=62.5/5=12.5us;需要计数次数为 N2=12.5/0.02=625; 因此,当计数在n<625时输出高频信号,当625<n<3125时输入低频信号,然后计数清零。三、 电路和程序设计本次设计的系统信号发生器在Quartus9.0下的RTL图如图3.1所示

13、。图3-1系统RTL图1.分频器主要程序如下:if clkin2'event and clkin2='1' thenif(a=n-1)then a<="0000000000"else a<=a+1;end if;if a>n/2 then clkout2<='0'else clkout2<='1'end if;2.伪随机码移位寄存器如下图所示:图3-2 移位寄存器3.矩形脉冲主要程序如下:if(clkin'event and clkin='1') then - 输入

14、信号发生变化; if(clkcount<5000)then - 判定计数器的计数; clkcount<=clkcount+1; - 计数器自增; clkout10<='0' - 输出低频信号; elsif(clkcount<6250) then clkcount<=clkcount+1; clkout10<='1' - 输出高频信号; else clkcount<="0000000000000000" - 计数器清零; end if; end if;4.LCD显示 在实验中,我们选择用单片机来控制LC

15、D实时显示输出波形的参数。用52单片机的P1.0-P1.3口来作为拨码开关的输入端,P0.0-P0.7来作为12864液晶的D0-D7控制它的并行数据传输。其硬件连线图如图3-3所示。图3-3 LCD连接图四、 测试与结果分析1. 测试条件仪器:示波器、数字万用表。2. 测试方案将FPGA的输出端接到示波器上显示输出波形。LCD显示部分在LCD上实时显示出来。3. 测试结果与分析图4-1 12分频仿真结果图4-2 矩形脉冲8KHz的仿真结果图4-3 伪随机码的仿真结果 图4-4 32KHz的方波 图4-5 32KHz的方波LCD显示五、 总结与展望信号发生器是科研及工程实践中最重要的仪器之一,

16、以往多使用硬件组成,随着信息技术高速发展,集成电路的大规模使用,电子系统已经进入了一个高速发展的全新时段。特别是EDA技术的日趋成熟的今天,通过计算机辅助设计,可以很好地完成电子设计的自动化。在设计过程中,可根据需要随时改变器件的内部逻辑功能和管脚的信号方式,EDA技术借助于大规模集成的FPGA/CPLD和高效的设计软件,用户不仅可通过直接对芯片结构的设计实行多种数字逻辑系统功能,而且由于管脚定义的灵活性,大大减轻了电路图设计和电路板设计的工作量及难度,同时,这种基于可编程芯片的设计大大减少了系统芯片的数量,缩小了系统的体积,提高了系统的可靠性。基于FPGA的正弦信号发生器结合了的EDA技术和

17、DDS理论,在EDA技术高速、高效、高可靠性的前提下得到了更优的设计效果。但是系统的功能还没有得到完全利用,由于DDS技术是利用查表法来产生波形的,则在基于FPGA设计时只要把ROM改成RAM变可实现任意波形的产生。本次设计在总体上符合设计要求,能较好的实现设计功能。其中也存在有不足之处。第一,在累加器设计中,没有采用流水先设计。因而累加器系统工作频率没能得到提高,性能不够优越。第二,设计波形ROM是没有很好地利用正弦信号的对称性来设计波形数据,对系统输出信号的精度有一定的影响。第三,外围电路没有设计键盘输入模块,使得操作不够直观灵活。以上的几点不足,自己希望在今后的再次设计中都能得到完善的弥

18、补。在本课题的完成中,我得到了很多人的帮助,在此表示衷心的感谢!首先感谢我们的导师黄老师以及程老师,任老师,我们的课题是在他们的指导和帮助下完成的,回答了我们很多难以解决的问题,对我们的课题完成起到了至关重要的作用。同时也要感谢我们组员之间的相互帮助,六个礼拜让我们互相学到了很多知识,感谢给予我理论帮助的各位参考文献的作者。六、 参考资料1马忠梅. 单片机的C语言应用程序设计.第五版北京航空航天大学出版社.2樊昌信.通信原理.国防工业出版社3EDA技术与应用附录1.12分频程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic

19、_unsigned.all;entity fenpin12 isport(clkin2:in std_logic; clkout2:out std_logic );end fenpin12; architecture a of fenpin12 issignal A:std_logic_vector(9 downto 0);beginprocess(clkin2,a)beginif clkin2'event and clkin2='1' thenif(a=11)then a<="0000000000"else a<=a+1;end if;

20、if a>5 then clkout2<='0'else clkout2<='1'end if;end if;end process;end a;2.伪随机码程序library ieee;use ieee.std_logic_1164.all;entity weisuiji is port(clk:in std_logic; Q :out std_logic); end weisuiji;architecture behav of weisuiji issignal c0,c1,c2,c3,c4,c5,c6,c7:std_logic;signa

21、l load:bit;begin process(clk,load)beginif clk'event and clk='1' then if (load='0') then c7<='0'c6<='0'c5<='0'c4<='0'c3<='0'c2<='0'c1<='0'c0<='1'load<='1'ELSEc0<=c1;c1<=c2;c2&l

22、t;=c3;c3<=c4;c4<=c5;c5<=c6;c6<=c7;c7<=c0 xor c4 xor c3 xor c2;Q<=c0;end if;end if;end process;end behav;3.矩形脉冲程序library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; -设计库和程序包调用; entity zhankongbi8 is port(clkin:in std_logic; clkou

23、t10:out std_logic); -电路模块端口说明和定义; End zhankongbi8; architecture hxl of zhankongbi8 issignal clkcount:std_logic_vector(15 downto 0);begin -结构体说明部分; process(clkin) begin if(clkin'event and clkin='1') then - 输入信号发生变化; if(clkcount<5000)then - 判定计数器的计数; clkcount<=clkcount+1; - 计数器自增; cl

24、kout10<='0' - 输出低频信号; elsif(clkcount<6250) then clkcount<=clkcount+1; clkout10<='1' - 输出高频信号; else clkcount<="0000000000000000" - 计数器清零; end if; end if; end process; -结束; end hxl;4.十二选一程序LIBRARY IEEE;use ieee.std_logic_1164.all;entity MUX121A isport(c1,c2,c3,

25、c4,c5,c6,c7,c8,c9,c10,c11,c12:in std_logic; DD:in std_logic_vector(3 downto 0); Y:out std_logic);end entity MUX121A;architecture BHV of MUX121A isbeginY<=c1 when DD="1110" else c2 when DD="1101" else c3 when DD="1100" else c4 when DD="1011" else c5 when DD=

26、"1010" else c6 when DD="1001" else c7 when DD="1000" else c8 when DD="0111" else c9 when DD="0110" else c10 when DD="0101" else c11 when DD="0100" else c12 when DD="0011" else 'Z'end architecture BHV;5.LCD显示程序#if

27、ndef _lcd12864_H_#define _lcd12864_H_#include "define.h"#define REC P0sbit R_S=P25;sbit W_R=P26;sbit EN =P27;void delay(unsigned int m)unsigned int i,j;for(i=0;i<m;i+)for(j=0;j<10;j+);void Lcd_Write_Data(unsigned char Lcd_Write_Data)/write dataW_R=0;R_S=1;delay(1);REC=Lcd_Write_Data;

28、EN=1;delay(1);EN=0;void Lcd_Write_Com(unsigned char Lcd_Write_Com) /write commandW_R=0;R_S=0;delay(1);REC=Lcd_Write_Com;EN=1;delay(1);EN=0;void Lcd_Pos(unsigned int x,unsigned y)/original diaplayed position unsigned char Lcd_Pos;switch (x) case 1: Lcd_Pos=0x80+y-1;break; case 2: Lcd_Pos=0x90+y-1;break; case 3: Lcd_Pos=0x88+y-1;break; case 4: Lcd_Pos=0x98+y-1;break; default : break; Lcd_Write_Com(Lcd_Pos);void Lcd_Init(void) / lcd's initalizationLcd_Write_Com(0x30);delay(100);Lcd_Write_Com(0x30);delay(37);Lcd_Write_Com(0x08);delay(100);Lcd_Write_Com(0x10);delay(100);Lc

温馨提示

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

评论

0/150

提交评论