《企业学习Ⅲ2研发实习报告》Word文件下载.docx

上传人:b****5 文档编号:19411527 上传时间:2023-01-06 格式:DOCX 页数:17 大小:428.34KB
下载 相关 举报
《企业学习Ⅲ2研发实习报告》Word文件下载.docx_第1页
第1页 / 共17页
《企业学习Ⅲ2研发实习报告》Word文件下载.docx_第2页
第2页 / 共17页
《企业学习Ⅲ2研发实习报告》Word文件下载.docx_第3页
第3页 / 共17页
《企业学习Ⅲ2研发实习报告》Word文件下载.docx_第4页
第4页 / 共17页
《企业学习Ⅲ2研发实习报告》Word文件下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

《企业学习Ⅲ2研发实习报告》Word文件下载.docx

《《企业学习Ⅲ2研发实习报告》Word文件下载.docx》由会员分享,可在线阅读,更多相关《《企业学习Ⅲ2研发实习报告》Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。

《企业学习Ⅲ2研发实习报告》Word文件下载.docx

本研究的重点就是用VHDL来实现DDS的功能,能够达到高精度的输出,同时标准波形数据生成存放在ROM中,可以简化运算过程,提高运算速度,加快反应时间。

本设计主要通过VHDL语言实现频率控制、波形控制、波形数据的提取、波形的产生工作。

其中,波形数据运用VHDL语言编写,整个试验3种信号的产生都是采用分频原理。

控制部分主要采用产生高低电平的拨码开关控制。

程序下载到FPGA上实现。

并通过Altera公司QuartusII9.0软件进行波形的仿真,从而完成整个设计。

考时钟的作用下,对输入的频率数据进行累加,并且将累加器的输出一部分作为读取波

(1)分频原理

所谓“分频”,就是把输入信号的频率变成成倍数地低于输入频率的输出信号。

文献资料上所谓用计数器的方法做“分频器”的方法,只是众多方法中的一种。

它的原理是:

把输入的信号作为计数脉冲,由于计数器的输出端口是按一定规律输出脉冲的,所以对不同的端口输出的信号脉冲,就可以看作是对输入信号的”分频“。

至于分频频率是怎样的,由选用的计数器所决定。

如果是十进制的计数器那就是十分频,如果是二进制的计数器那就是二分频,还有四进制、八进制、十六进制等等。

本设计的所有方波都是采用二分频,矩形脉冲和伪随机码是用分频的方波频率作为输入时钟脉冲产生。

而分频分为很多种,比如偶数分频,奇数分频,小数分频等等。

这次试验主要运用了偶数分频,偶数倍分频通过计数器计数是很容易实现的。

如进行N倍偶数分频,那么可以通过由待分频的时钟触发计数器计数,当计数器从0计数到N/2-1时输出时钟进行翻转,并给计数器一个复位信号,使得下一个时钟从零开始计数。

以此循环下去。

这种方法可以实现任意的偶数分频。

本次试验的方波频率产生都是用偶数分频原理产生,伪随机码和矩形脉冲也是用分频的方波作为输入时钟周期来产生。

(2)伪随机码原理

伪随机序列又称m序列或伪噪声序列,它是有带线性反馈的移位寄存器产生的周期最长的一种序列。

它是一种可以可以预先确定,并且可以重复产生和复制,又具有随机统计特性的2进制码序列。

伪随机序列所具有的的主要特点有以下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<

=c1whenDD="

1110"

else

c2whenDD="

1101"

c3whenDD="

1100"

c4whenDD="

1011"

c5whenDD="

1010"

c6whenDD="

1001"

c7whenDD="

1000"

c8whenDD="

0111"

c9whenDD="

0110"

c10whenDD="

0101"

c11whenDD="

0100"

c12whenDD="

0011"

'

Z'

;

输出选择用四位拨码开关。

2.方案比较与选择

图1-2改进的系统框图

在六周实训中,把由FPGA控制LCD实时显示换成了由52单片机来控制显示部分。

由于分频的时候有奇数和偶数分频,所以本来将分频分成了奇数和偶数分频,后来发现在实际实验中,输出的方波脉冲占空比不一定要50%。

在分频时,本来决定把用倍频器来把信号频率慢慢加上去,后来意识到可以直接用分频,就用了分频。

二、理论分析与计算

1.伪随机码的设计计算

任务与要求:

伪随机码:

方案如下:

伪随机序列长度为

,首先要找到长度为255的伪随机序列特征多项式

确定关系式

2.方波频率的设计计算

方波频率:

由于FPGA的晶振为50MHz,所以产生的所有频率都可以用50MHz分频而来。

所以分频程序可以分别为12,、25、50、1562、3125、6250、25000、50000分频。

3.矩形脉冲的设计计算

(1)F=8KHz

设计VHDL模块,输入模块的时钟信号为50Mhz输出如以下参数的方波信号,频率为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输出如以下参数的方波信号,频率为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<

3125时输入低频信号,然后计数清零。

三、电路和程序设计

本次设计的系统信号发生器在QuartusⅡ9.0下的RTL图如图3.1所示。

图3-1系统RTL图

1.分频器

主要程序如下:

ifclkin2'

eventandclkin2='

1'

then

if(a=n-1)thena<

="

0000000000"

elsea<

=a+1;

endif;

ifa>

n/2thenclkout2<

='

0'

elseclkout2<

endif;

2.伪随机码

移位寄存器如下图所示:

图3-2移位寄存器

3.矩形脉冲

if(clkin'

eventandclkin='

)then--输入信号发生变化;

if(clkcount<

5000)then--判定计数器的计数;

clkcount<

=clkcount+1;

--计数器自增;

clkout10<

--输出低频信号;

elsif(clkcount<

6250)then

clkcount<

--输出高频信号;

elseclkcount<

0000000000000000"

--计数器清零;

endif;

4.LCD显示

在实验中,我们选择用单片机来控制LCD实时显示输出波形的参数。

用52单片机的P1.0-P1.3口来作为拨码开关的输入端,P0.0-P0.7来作为12864液晶的D0-D7控制它的并行数据传输。

其硬件连线图如图3-3所示。

图3-3LCD连接图

四、测试与结果分析

1.测试条件

仪器:

示波器、数字万用表。

2.测试方案

将FPGA的输出端接到示波器上显示输出波形。

LCD显示部分在LCD上实时显示出来。

3.测试结果与分析

图4-112分频仿真结果

图4-2矩形脉冲8KHz的仿真结果

图4-3伪随机码的仿真结果

图4-432KHz的方波图4-532KHz的方波LCD显示

五、总结与展望

信号发生器是科研及工程实践中最重要的仪器之一,以往多使用硬件组成,随着信息技术高速发展,集成电路的大规模使用,电子系统已经进入了一个高速发展的全新时段。

特别是EDA技术的日趋成熟的今天,通过计算机辅助设计,可以很好地完成电子设计的自动化。

在设计过程中,可根据需要随时改变器件的内部逻辑功能和管脚的信号方式,EDA技术借助于大规模集成的FPGA/CPLD和高效的设计软件,用户不仅可通过直接对芯片结构的设计实行多种数字逻辑系统功能,而且由于管脚定义的灵活性,大大减轻了电路图设计和电路板设计的工作量及难度,同时,这种基于可编程芯片的设计大大减少了系统芯片的数量,缩小了系统的体积,提高了系统的可靠性。

基于FPGA的正弦信号发生器结合了的EDA技术和DDS理论,在EDA技术高速、高效、高可靠性的前提下得到了更优的设计效果。

但是系统的功能还没有得到完全利用,由于DDS技术是利用查表法来产生波形的,则在基于FPGA设计时只要把ROM改成RAM变可实现任意波形的产生。

本次设计在总体上符合设计要求,能较好的实现设计功能。

其中也存在有不足之处。

第一,在累加器设计中,没有采用流水先设计。

因而累加器系统工作频率没能得到提高,性能不够优越。

第二,设计波形ROM是没有很好地利用正弦信号的对称性来设计波形数据,对系统输出信号的精度有一定的影响。

第三,外围电路没有设计键盘输入模块,使得操作不够直观灵活。

以上的几点不足,自己希望在今后的再次设计中都能得到完善的弥补。

在本课题的完成中,我得到了很多人的帮助,在此表示衷心的感谢!

首先感谢我们的导师黄老师以及程老师,任老师,我们的课题是在他们的指导和帮助下完成的,回答了我们很多难以解决的问题,对我们的课题完成起到了至关重要的作用。

同时也要感谢我们组员之间的相互帮助,六个礼拜让我们互相学到了很多知识,感谢给予我理论帮助的各位参考文献的作者。

六、参考资料

[1]马忠梅.单片机的C语言应用程序设计.第五版北京航空航天大学出版社.

[2]樊昌信.通信原理.国防工业出版社

[3]EDA技术与应用

附录

1.12分频程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityfenpin12is

port(clkin2:

instd_logic;

clkout2:

outstd_logic);

endfenpin12;

architectureaoffenpin12is

signalA:

std_logic_vector(9downto0);

begin

process(clkin2,a)

if(a=11)thena<

5thenclkout2<

endprocess;

enda;

2.伪随机码程序

entityweisuijiis

port(clk:

Q:

outstd_logic);

endweisuiji;

architecturebehavofweisuijiis

signalc0,c1,c2,c3,c4,c5,c6,c7:

std_logic;

signalload:

bit;

process(clk,load)

begin

ifclk'

eventandclk='

then

if(load='

)then

c7<

c6<

c5<

c4<

c3<

c2<

c1<

c0<

load<

ELSE

=c1;

=c2;

=c3;

=c4;

=c5;

=c6;

=c7;

=c0xorc4xorc3xorc2;

Q<

=c0;

endprocess;

endbehav;

3.矩形脉冲程序

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

--设计库和程序包调用;

entityzhankongbi8is

port(clkin:

clkout10:

--电路模块端口说明和定义;

Endzhankongbi8;

architecturehxlofzhankongbi8is

signalclkcount:

std_logic_vector(15downto0);

begin--结构体说明部分;

process(clkin)

if(clkin'

clkcount<

clkout10<

elseclkcount<

--结束;

endhxl;

4.十二选一程序

LIBRARYIEEE;

entityMUX121Ais

port(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12:

DD:

instd_logic_vector(3downto0);

Y:

endentityMUX121A;

architectureBHVofMUX121Ais

endarchitectureBHV;

5.LCD显示程序

#ifndef_lcd12864_H_

#define_lcd12864_H_

#include"

define.h"

#defineRECP0

sbitR_S=P2^5;

sbitW_R=P2^6;

sbitEN=P2^7;

voiddelay(unsignedintm)

{

unsignedinti,j;

for(i=0;

i<

m;

i++)

for(j=0;

j<

10;

j++);

}

voidLcd_Write_Data(unsignedcharLcd_Write_Data)//writedata

W_R=0;

R_S=1;

delay

(1);

REC=Lcd_Write_Data;

EN=1;

EN=0;

voidLcd_Write_Com(unsignedcharLcd_Write_Com)//writecommand

R_S=0;

REC=Lcd_Write_Com;

voidLcd_Pos(unsignedintx,unsignedy)//originaldiaplayedposition

unsignedcharLcd_Pos;

switch(x)

{

case1:

Lcd_Pos=0x80+y-1;

break;

case2:

Lcd_Pos=0x90+y-1;

case3:

Lcd_Pos=0x88+y-1;

case4:

Lcd_Pos=0x98+y-1;

default:

break;

}

Lcd_Write_Com(Lcd_Pos);

voidLcd_Init(void)//lcd'

sinitalization

Lcd_Write_Com(0x30);

delay(100);

delay(37);

Lcd_Write_Com(0x08);

Lcd_Write_Com(0x10);

Lcd_Write_Com(0x0C);

Lcd_Write_Com(0x01);

delay(10);

Lcd_Write_Com(0x06);

voidLcd_Usedata(unsignedchar*p)//writediaplayeddata

{

while(*p>

0)

{

Lcd_Write_Data(*p);

p++;

voidLcd_Vardata(longdat)//5位数去零操作

ucharwan,qian,bai,shi,ge;

wan=dat/10000;

qian=dat/1000%10;

bai=dat/100%10;

shi=dat/10%10;

ge=dat%10;

if(wan==0)

Lcd_Usedata("

"

);

Lcd_Write_Data(0x30+wan);

if(!

wan&

&

!

qian)

Lcd_Write_Data(0x30+qian);

qian&

bai)

Lcd_Write_Data(0x30+bai);

bai&

shi)

Lcd_Write_Data(0x30+shi);

Lcd_Write_Data(0x30+ge);

voidLcd_Dotdata(longdat)//小数拆分

ucharQian,Bai,Shi,Ge;

Qian=dat/1000%10;

Bai=dat/100%10;

Shi=dat/10%10;

Ge=dat%10;

Lcd_Write_Data(0x30+Qian);

Lcd_Write_Data(0x30+Bai);

."

Lcd_Write_Data(0x30+Shi);

Lcd_Write_Data(0x30+Ge);

#endif

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

当前位置:首页 > 工程科技 > 电力水利

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1