fpga工程师

2024-10-25 版权声明 我要投稿

fpga工程师(精选6篇)

fpga工程师 篇1

1.Verilog语言及其于硬件之间的关系。

2.器件结构(最好熟练掌握Spartan3,Vertix4系列的器件结构,及其资源于Verilog行为描述方法的关系。)。

3.开发工具(熟练掌握Synplify,Quartus,ISE,Modelsim)。

4.数字电路(组合电路,触发器,特别是D触发器构成分频器,奇数倍分频占空比为50%,时序电路,并且能用Verilog语言描叙。)。

5.熟悉FPGA设计流程(,综合,布局布线,时序分析)。

6.熟练掌握资源估算(特别是slice,lut,ram等资源的估算)。

7.同步设计原理。

8.熟练掌握基本概念(如建立时间,保持时间,流量(即所做FPGA设计的波特率)计算,延迟时间计算(所做FPGA设计),竞争冒险,消除毛刺的方法等等)。

9.具备具体设计经验(对应届生而言如毕业设计)。

10.良好的设计思路(流水线设计即熟称打拍子,在速率资源功耗之间的折中考虑)。一个合格的FPGA工程师至少在以下三个方面的一个非常熟悉:

1.应用

2.DSP应用

3.高速收发器应用

将自己的走过的弯路和总结的经验与大家分享一下,希望对您有一点点的参考价值。

首先从先从如何成为一个合格的设计者说起吧!初学者觉得一切都是挑战,一切都新鲜,不知从何处下手。我总结了学习EDA逻辑设计的4个步骤,请拍砖!

1。首先,应该好好学习一下FPGA/CPLD的设计设计流程。

不要简单的以为就是设计输入-》仿真-》综合-》实现那么一回事,要抠细,要学精,要多问每个步骤的注意事项,区分相关步骤的联系和区别。比如要搞清楚功能仿真、综合后仿真、Translate后仿真、Map后的仿真、布局布线后仿真的作用都是什么,什么时候应该做,什么时候可以不做这些仿真!学习清楚了设计流程最大的好处就是有利于培养良好的EDA设计习惯,日后会受益非浅!

2。关于设计输入和Coding Style。

设计输入最好学习HDL语言,Verilog、VHDL都可以,可以把状态机输入和原理图输入作为补充内容,但不是重点。我在前面的帖子已经反复强调了 Coding Style的重要性。因为它是逻辑设计人员的一个基本业务素质。而且Coding Style不是看几篇文章,学几条原则就能够成为高手的,他需要您在工作中不断的体会和积累,在学习的最初,有Coding Style的意识,设计者就会有意的积累,对日后发展很有好处。反之则后患无穷。

3。培养硬件的意识,培养系统的观念。

我也在交流和授课的时候很强调硬件意识,如果从形式上看,逻辑设计随着智能化和优化手段的不断发展最后会越来越灵活,越来越简单。比如我们现在在使用大型 FPGA时就很少谈如何用Floorplanner优化,手动布线,如果用手动方式,其工作量太大了啊!一个设计的优劣,关键看其设计者的硬件意识,和系统意识。硬件意识就是要求先做到对设计的硬件胸有成竹,HDL代码仅仅是一个表述心中硬件的工具。系统意识要求设计者有宏观的观念,对设计的全局有个合适的安排,比如时钟域,模块复用,约束,面积,速度等问题。要知道在系统上复用模块节省的面积远比在代码上小打小闹来的实惠得多。

4。最后才是工具软件的使用。

现在EDA软件都越来越友好,越来越“傻瓜化”,如果您费了1年还没有基本摸清软件的使用,我敢说,那是一个比较烂的软件(起码在用户接口上),因为这是和EDA这种方式的理念背道而驰的。但是作为设计者,软件是工具,应该熟练掌握各个步骤不同方面的软件,这样才能最大程度地发挥您的聪明才智,才能使您如虎添翼!

需要对相关器件的要求有一定的了解,对和这些器件之间的控制、数据交换等通信要清晰,对性能和功能清楚。而且作为基本的素质要求要能看懂原理图,和PCB要不没法调试,呵呵。

另外比较重要的一点是对FPGA设计的一些基本原则要有一个清晰的认识,比如: “面积和速度的互换”,“流水线设计方式”,“乒乓操作”。

对最基本和最常用的模块要非常熟悉,比如单口/双口RAM,同步/异步FIFO等等。

fpga工程师 篇2

信道化接收机基本原理是将宽带信号按频率进行分割处理, 也就是将侦收到的信号频段分解成若干个子频段, 然后对各子段分别处理, 每个子段也称为信道。由于使用了数字化处理, 数字信道化接收机可以设计出有着相同的特性和带宽的滤波器组, 有效地解决信道不均衡的问题, 得到了广泛的应用。

1 高效结构的信道化接收机原理

高效结构的信道化接收机已经是成熟理论, 推导后的公式为:

从公式1和2可以看到, 在滤波器之放置D倍抽取器, 使进入每个滤波器组的数据率下降至原来的1/D, 每个信道的抽取滤波器是该滤波器的多相分量gp (m) , 而不再是原先的原型低通滤波器hLP (n) , 其运算量随之降至原来的1/D。这种信道化接收机的实时处理能力得到极大地提高。另外, 采用其高效算法FFT来实现DFT后, 可以大大加快运算速度。

根据上面公式1和2得到数学模型如图1所示:

2 信道划分和抽取率选择

经典数字信道化的信道划分如图2所示, 由于实际中滤波器不能达到理想化, 因此, 在相邻两个信道交界处的滤波器是混叠的。因此, 频谱泄露不可避免的要产生, 很难检测到存在盲区的信号。即使相邻两个信道交界处的信号被检测到了, 由于信道的重叠, 所以会在两个信道都有输出。如果抽取率D与信道数M相等, 由于每个信道输出信号的采样率降为1/D, 因此两个信道的输出必然有一个是处于欠采样状态。

本文采用了50%重叠的信道划分方式, 如图3所示。相邻信道频谱构成50%的重叠拓宽了滤波器的频响, 各信道的通带拼接后可覆盖整个多通道信号带宽, 消除了接收盲区, 真正实现信号的全概率截获。

为了解决信道混叠的问题, 可以将各信道的输出数据率加倍, 即:

其中M为信道数, D位抽样率, F为过采样比率。

设D=16, M=32。当滤波器到达稳定状态时, 可将多项滤波分解为:

为了便于在FPGA中实现, 根据4式可以画出结构图, 如图4所示:

上图所示, 对于0到15信道, 是输入数据直接与滤波器系数进行卷积运算。对于16到31信道, 时将输入数据移动了N点后再与滤波器系数进行卷积运算, 如式5所示。即为:

采用这种结构后, 从FFT产生的Y (k) 输出频率数目是输出采样速率的2倍, 后续处理电路的带宽为输出滤波器的2倍。

3 Matlab仿真

针对单点频信号x (n) 进行Matlab仿真, x (n) 频率为100MHz, 来源于数字下变频。滤波器组频率响应及输入信号频谱如图5所示。由图可见x (n) 同时落在信道5和信道6。

图6所示为信道化滤波器输出, 图中未列信道无输出。信道5, 6输出的是信号x (n) , 信道5内频率为6.25MHz, 信道中心频率为5*18.75MHz=93.75MHz, 信道6内频率为-12.5MHz, 信道中心频率为6*18.75MHz=112.5, 因此测得信号的输入频率均为100MHz。

4 FPGA实现

根据式5推导出的结果, 在FPGA内部的实现可以采用图7所示结构。在XILINX公司个Virtex6上几个主要模块都可以调用IP CORE来实现, 其中, 延时模块可以使用RAM-based Shift Register, 多项滤波可以使用FIR compiler中的poly-phase filter bank receiver模式, 32点FFT可以使用Fast FourierrTransform。

在Active-hdl8.3上仿真图如图8所示, 其中cs_re1和cs_im1为信号幅度最大通道输出的实部和虚部。

5 结语

在高效的数字信道化接收机结构基础上, 采用50%重叠多相滤波的信道划分方式, 并且降低抽取率, 实现跨信道信号的无盲区接收, 有效避免了虚假信号输出。仿真试验和FPGA实现的结果表明, 这种接收机结构具有较好的实时处理能力, 复杂度较低。随着高速ADC和FPGA等芯片性能的不断提高, 这种方法可以成为现代宽带侦察接收机的优选方案。

参考文献

[1]高亚军.基于FPGA的数字信号处理[M].北京:电子工业出版社, 2015:237-241

[2]James Tsui.宽带数字接收机[M].北京:电子工业出版社, 2002:11-25

[3]赵国庆.雷达对抗原理[M].西安:西安电子科技大学出版社, 1999:4-7

[4]杨小牛, 楼才义, 徐建良.软件无线电原理与应用[M].北京:电子工业出版社, 2001:69-74

如何学习fpga 篇3

关键词:工作人员, 硬件, 设计, FPGA

掌握FPGA可以找到一份很好的工作,对于有经验的工作人员,使用FPGA可以让设计变得非常有灵活性。掌握了FPGA设计,单板硬件设计就非常容易(不是系统设计),特别是上大学时如同天书的逻辑时序图,看起来就非常亲切。但FPGA入门却有一定难度,因为它不像软件设计,只要有一台计算机,几乎就可以完成所有的设计。FPGA设计与硬件直接相关,需要实实在在的调试仪器,譬如示波器等。这些硬件设备一般比较昂贵,这就造成一定的入门门槛,新人在入门时遇到一点问题或者困难,由于没有调试设备,无法定位问题,最后可能就会放弃。其实这时如果有人稍微指点一下,这个门槛很容易就过去。我用FPGA做设计很多年了,远达不到精通的境界,只是熟悉使用,在这里把我对FPGA学习步骤理解写出来,仅是作为一个参考,不对的地方,欢迎大家讨论和指正。

FPGA学习步骤

1、工欲善其事,必先利其器。

计算机必不可少。目前FPGA应用较多的是Altera和xilinx这两个公司,可以选择安装quartusII或者ISE软件。这是必备的软件环境。

硬件环境还需要下载器、目标板。虽然有人说没有下载器和目标板也可学习fpga,但那总是纸上谈兵。这就像谈女朋友,总是嘴上说说,通个电话,连个手都没牵,能说人家是你朋友?虽说搭建硬件环境需要花费,但想想,硬件环境至多几百元钱,你要真的掌握FPGA的设计,起薪比别人都不止高出这么多。这点花费算什么?

FPGA学习步骤

2、熟悉verilog语言或者vhdl语言,熟练使用quartusII或者ISE软件。

VHDL和verilog各有优点,选择一个,建议选择verilog。熟练使用设计软件,知道怎样编译、仿真、下载等过程。

起步阶段不希望报一些培训班,除非你有钱,或者运气好,碰到一个水平高、又想把自己的经验和别人共享的培训老师,不然的话,培训完后总会感觉自己是一个冤大头。入门阶段可以在利用网络资源完成。

FPGA学习步骤

3、设计一个小代码,下载到目标板看看结果

此时可以设计一个最简答的程序,譬如点灯。如果灯在闪烁了,表示基本入门了。如果此时能够下载到FPGA外挂的flash,FPGA程序能够从flash启动,表明FPGA的最简单设计你已经成功,可以到下一步。

FPGA学习步骤

4、设计稍微复杂的代码,下载到目标板看看结果。

可以设计一个UART程序,网上有参考,你要懂RS232协议和FPGA内置的逻辑分析仪。网上下载一个串口调试助手,调试一番,如果通信成功了,恭喜,水平有提高。进入下一步。

FPGA学习步骤

5、设计复杂的代码,下载到目标板看看结果。

譬如sdram的程序,网上也有参考,这个设计难度有点大。可用串口来调试sdram,把串口的数据存储到sdram,然后读回,如果成功,那你就比较熟悉FPGA设计了

FPGA学习步骤

6、设计高速接口,譬如ddr2或者高速串行接口

这要对FPGA的物理特性非常了解,而且要懂得是时序约束等设计方法,要看大量的原厂文档,这部分成功了,那就对FPGA的物理接口掌握很深,你就是设计高手了

FPGA学习步骤

7、设计一个复杂的协议

譬如USB、PCIexpress、图像编解码等,锻炼对系统的整体把握和逻辑划分。完成这些,你就是一个一流的高手、FPGA学习步骤

8、学习再学习

学习什么,我也不知道,我只知道“学无止境,山外有山”。

现在很多FPGA工程师,没找到合适,我觉得很多人从开始的时候就误入歧途了,对新手学习FPGA设计我也说一点看法吧。我认为要从基础开始做,基础牢,才有成为高手的可能。

我觉得FPGA学习有以下几步必须要走:

第一步:学习了解FPGA结构,FPGA到底是什么东西,芯片里面有什么,不要开始就拿个开发板照着别人的东西去编程。很多开发板的程序写的很烂,我也做过一段时间的开发板设计,我觉得很大程度上,开发板在误人子弟。不过原厂提供的正品开发板,代码很优秀的,可以借鉴。只有了解了FPGA内部的结构才能明白为什么写Verilog和写C整体思路是不一样的。

第二步:掌握FPGA设计的流程。了解每一步在做什么,为什么要那么做。很多人都是不就是那几步吗,有什么奇怪的?呵呵,我想至少有一半以上的人不知道synthesize和traslate的区别吧。

了解了FPGA的结构和设计流程才有可能知道怎么去优化设计,提高速度,减少资源,不要急躁,不要去在为选择什么语言和选择哪个公司的芯片上下功夫。语言只是一个表达的方式,重要的是你的思维,没有一个好的指导思想,语言用得再好,不过是个懂语言的人。

第三步:开始学习代码了。我建议要学代码的人都去Altera或Xilinx的网站上下原厂工程师的代码学习。不要一开始就走入误区。

第四步:template很重要。能不能高效利用FPGA资源,一是了解fpga结构,二是了解欲实现的逻辑功能和基本机构,三是使用正确的模板。FPGA内部器件种类相对较单一,用好模板,你的逻辑才能被高效的综合成FPGA擅长表达的结构:)

做FPGA主要是要有电路的思想,作为初学者,往往对器件可能不是熟悉,那么应该对于数字电路的知识很熟悉吧,FPGA中是由触发器和查找表以及互联线等基本结构组成的,其实在我们在代码里面能够看到的就是与非门以及触发器,不要把verilog和c语言等同起来,根本就是不同的东西,没有什么可比性,在写一句程序的时候应该想到出来的是一个什么样的电路,计数

FPGA,学习心得体会 篇4

《fpga技术基础》学习报告--课程内容学习心得

姓 名:

学 号: 年级专业: 指导教师:

瞿麟 201010401128 自动化101薛小军摘要从开始学fpga到现在粗略算来的话,已经有3个多月了,就目前而言,我并不确定自己算不算高手们所说的入门了,fpga学习总结。但是不管现在的水平如何,现在就总结一下自己学习它的感受或一些认识吧。

关键词

fpga de2板 quartusii软件 verilog语言

引言

fpga是什么?fpga现状?怎样学习fpga?

fpga是现场可编程门阵列的简称,fpga的应用领域最初为通信领域,但目前,随着信息产业和微电子技术的发展,可编程逻辑嵌入式系统设计技术已经成为信息产业最热门的技术之一,应用范围遍及航空航天、医疗、通讯、网络通讯、安防、广播、汽车电子、工业、消费类市场、测量测试等多个热门领域。并随着工艺的进步和技术的发展,向更多、更广泛的应用领域扩展。越来越多的设计也开始以asic转向fpga,fpga正以各种电子产品的形式进入了我们日常生活的各个角落。

正文

(1)掌握fpga的编程语言

在学习一门技术之前我们往往从它的编程语言开始,如同学习单片机一样,我们从c语言开始入门,当掌握了c语言之后,开发单片机应用程序也就不是什么难事了。学习fpga也是如此,fpga的编程语言有两种:vhdl和verilog,这两种语言都适合用于fpga的编程。(2)fpga实验尤为重要 除了学习编程语言以外,更重要的是实践,将自己设计的程序能够在真正的fpga里运行起来,这时我们需要选一块板子进行实验,我们选择使用de2板才进行试验。初识de2开发板

de2的资源de2的资源非常丰富,包括

1.核心的fpga芯片-cyclone ii 2c35 f672c6,从名称可以看出,它包含有35千个le,在altera的芯片系列中,不算最多,但也绝对够用。altera下载控制芯片-epcs16以及usb-blaste对jtag的支持。

2.存储用的芯片有: 512-kb sram,8-mbyte sdram,4-mbyte flash memory 3.经典io配置:拥有4个按钮,18个拨动开关,18个红色发光二极管,9个绿色发光二极管,8个七段数码管,16*2字符液晶显示屏,4.超强多媒体:24位cd音质音频芯片wm8731(mic输入+linein+ 标准音频输出),视频解码芯片(支持ntsc/pal制式),带有高速dac视屏输出vga模块。5.更多标准接口:通用串行总线usb控制模块以及a、b型接口,sd card接口,irda红外模块,10/100m自适应以太网络适配器,rs-232标准串口,ps/2键盘接口 6.其他:50m,27m晶振各一个,支持外部时钟,80针带保护电路的外接io 7.此外还有:配套的光盘资料,qutuarsii软件,niosii 6.0ide,例程与说明文档。

关于管脚分配

当我们创建一个fpga用户系统的时候,到最后要做的工作就是下载,在下载之前必须根据芯片的型号分配管脚,这样才能将程序中特定功能的管脚与实际中的fpga片外硬件电路一一对应。

fpga简单的说,就是现场可编程逻辑阵列。它的内部是逻辑单元,它们之间可以用线连接,至于以怎样的形式相连,则可以根据应用者写入的逻辑决定。每次布线都会重新组合逻辑单元,从而可以任意的编写不同的逻辑。当然,前提是定义的逻辑块不超出它可读写的最大值。总结在学习fpga时,遇到的问题有许多,譬如,写代码时的警告,特别是一些不能忽视的警告,每次遇到时,总是还要检查一会儿才能改过来,或者有的警告已经出现了几次,但是就是解决不掉。每次在学一个模块时,只要是看懂了,它的一些重点就没有及时的记录在本子上,只有个别的想起来时,才会做笔记。每做完一个模块,没有及时记录下自己从这个模块中学到了什么。上面的不足,都是在写模块的过程中,自己逐渐暴露出来的。我很庆幸自己的一些问题能及时的被发现,避免类似的事情再次发生。像遇到警告时,都要记录下来,通过改正后,要注释,写下警告的原因,定期看一下。每次写模块的时候,都要记下重点知识,即使是自己懂得的,好记性都是比不过烂笔头的。

关于以上的总结,我相信在以后的学习中一定会对自己有莫大的帮助,它会时刻警醒自己,在以前的学习中,自己有哪些不足,以后千万不能再去犯同样的错误,不断地纠正,不断地进步,相信自己一定会学好fpga的。篇二:fpga学习心得

回想起自己学fpga,已经有一段时间了,从开始的茫然,到后来的疯狂看书,设计开发板,调电路,练习各种fpga实例,到最后能独立完成项目,一路走来,感受颇多,拿出来和大家分享,顺便介绍下自己的一点经验所得,希望对初学者有所帮助。废话不说了,下面进入正题,学习fpga我主要经历了这么几个阶段:

①、verilog语言的学习,熟悉verilog语言的各种语法。

②、fpga的学习,熟悉quartusii软件的各种功能,各种逻辑算法设计,接口模块(rs232,lcd,vga,spi,i2c等)的设计,时序分析,硬件优化等,自己开始设计简单的fpga板子。③、niosii的学习,熟悉niosii的开发流程,熟悉开发软件(sopc,niosii ide),了解niosii的基本结构,设计niosii开发板,编写niosii c语言程序,调试板子各模块功能。先来说说第一个阶段,现在主要的硬件描述语言有vhdl,verilog两种,在本科时老师一般教vhdl,不过现在

verilog用的人越来越多,其更容易上手(与c语言语法比较类似),也更灵活,现在的ic设计基本都用verilog。像systemc,systemverilog之类的应该还在萌芽阶段,以后可能会有较大发展。鉴于以上原因我选择了verilog作为我学习的硬件描述语言。

其实有c语言的基础,学起verilog的语言很简单,关键要有并行的概念,所有的module,assign,always都是并行的,这一点与软件语言有明显不同。这里推荐几本评价比较好的学习verilog的书籍: ①、《verilog 数字系统设计教程》,这本书对于入门是一本很好的书,通俗易懂,让人很快上手,它里面的例子也不错。但本书对于资源优化方面的编程没有多少涉及到。②、《设计与验证verilog hdl》,这本书虽然比较薄,但是相当精辟,讲解的也很深入,很多概念看了这本书有种豁然开朗的感觉,呵呵。

学习verilog其实不用看很多书,基本的语法部分大家都一样,关键是要自己会灵活应用,多做练习。

verilog语言学了一段时间,感觉自己可以编点东西,希望自己编的程序在板子上运行看看结果,下面就介绍我学习的第二个阶段。

刚开始我拿了实验室一块cpld的开发板做练习,熟悉quartusii的各种功能,比如ip的调用,各种约束设置,时序分析,logiclock设计方法等,不过做到后面发现cpld的资源不太够(没有内嵌的ram、不能用signaltapii,le太少等),而实验室没有fpga开发板,所以就萌生了自己做fpga开发板的意图,刚好cadence我也学的差不多了,就花了几天时间主要研究了fpga配置电路的设计,在板子上做了jtag和as下载口,在做了几个用户按键和led,其他的口全部引出作为io口,电路比较简单,板子焊好后一调就通了(心里那个爽啊...)。我选的fpga是cycloneii系列的ep2c5,资源比以前的fpga多了好几倍,还有pll,内嵌的ram,可以试试signaltapii,用内嵌的逻辑分析仪测试引脚波形,对于fpga的调试,逻辑分析仪是至关重要的。利用这块板子我完成了项目中的几个主要功能:rs232通信,指令译码,配置dds,ad数据高速缓存,电子开关状态设置等,在实践中学习起来真的比平时快很多,用到什么学什么动力更大。这个时候我主要看的数据有这几本感觉比较好: ①、《altera fpga/cpld 设计(基础篇)》:讲解一些基本的fpga设计技术,以及quartusii中各个工具的用法(ip,rtl,signalprobe,signaltapii,timing closure floorplan,chip editor等),对于入门非常好。②、《altera fpga/cpld 设计(高级篇)》:讲解了一些高级工具的应用,logiclock,时序约束很分析,设计优化,也讲述了一些硬件编程的思想,作为提高用。③、《fpga设计指南--器件,工具和流程》:这本书看了他的目录忍不住就买了,这本书讲述了fpga设计的各个方面,虽然每个方面都是点到为止,但能让你有个整体的概念,了解fpga的所有设计功能,了解fpga开发的整个流程。

④、在这里也推荐几个学习fpga比较好的论坛,不过很多人一看到英语就不想看,其实上面的英文很简单,很多时候不敢看是因为对自己没信心或心静不下来看。不过官方网站上资料很多,刚开始可能会觉得资料安排的有点乱,不方便查找,以后有时间我列个资料的链接目录,整理一下,方便大家查找。

到这里,自己最fpga的学习有一段时间了,练习了很多实例,自己也编写了不少程序,也有了一些项目经验,算是对fpga有些了解了。在不断的学习中发现fpga不仅可以做逻辑设计,算法设计等,还能做嵌入式开发,altera先后开发了nios,niosii两款fpga的嵌入式软核,并有配套的软件,刚开始看到这些我真是心中突然豁然开朗,学习真的是无止境,又一个全新的领域摆在我面前,我决定学习niosii,要学就要学最好。

刚开始入门是很痛苦的,嵌入式设计需要从硬件到驱动到软件全部熟悉,硬件系统问题还不是很大(以前做过单片机,dsp等mcu),处理器的架构心里还有点数,对于驱动和软件工程,刚开始学习真的很头痛。niosii应该还算比较新的内容(应该是2004年出的),国内的书籍不算很多,网上这方面的资料也比较零碎,所以我就开始将altera网站上这方面的资料系统的看一边,这里推荐几本网站上的handbook: ①、embedded design handbook ②、nios ii processor reference handbook ③、nios ii software developers handbook ④、quartus ii handbook, volume 4: sopc builder ⑤、quartus ii handbook, volume 5: embedded peripherals 看完这些handbook,总算基本明白整个架构,软硬件设计方法,驱动的编写等,感觉自己可以编一些嵌入式的程序了,不过虽然前面做的那块ep2c5的板子支持niosii系统,不过对于嵌入式设计来说还是显得单薄了一点,没有sdram,flash这两个比较基本的模块,ep2c5内嵌的ram太小,程序写不大,而且每次总要绞尽脑汁优化程序代码大小,很多时候优化了后函数功能会受到限制,不利于初学者,也不利于调试。所以到这里我有产生了自己做一块nios开发板的想法(直接买比较贵,自己做便宜,而且还能锻炼自己,一举两得),通过借鉴其他开发板,选择自己开发板上需要包含什么模块,确定各个模块使用什么芯片,阅读各个芯片的datasheet,画出原理图并做出pcb图,这块板子我选的是ep2c8q208,比上一块资源又将近多了一倍,板子上还有以下模块:sdram,flash,epcs4,rs232,usb,vga,ps2,ad,da,lcd等,满足了一般开发板的配置要求。板子回来以后调试了四五天,(flash工作了,lcd显示了,rs232通了,usb通了,ad,da工作了,sdram正常了...),真是每天都有惊喜,每个模块都编写了niosii软件测试程序,调试硬件的时候对软件的运行也更熟悉了。在这次调试的过程中真的学到了很多,为此专门写了好几页调试笔记,下次拿出来和大家一起分享。现在硬件平台有了,niosii也了解的差不多了,终于可以自己编写一些规模大一点的程序了。学fpga的一点心得

从去年开始学fpga,以前一直做dsp,但因为项目的需要,在一个应用中只有fpga才能解决问题,所以硬着头皮上fpga,又因为结项目的时间比较紧,所以主要以解决问题为目的,说真的,项目做下来写了四千多行的代码,达到了设计目标,但对fpga学习还不够系统,也正进一步的学习中.因为我是单干,没有团队,遇到问题只能在网上找资料,其难度可想而知,幸好以前用过cpld,有一点基础,用的编程语言是ahdl,感觉ahdl写一点小程序还可以,但做复杂程序就有点费力了(应该是我的ahdl没学好),所以在做fpga程序时我选择了比较简单的 verilog语言。

由于没人指导,所以买了一个简单的fpga开发板,是cyclone的,开发板就是好,送了较多学习资料,用了一个星期的时间,学习了niosii的基本应用,当然,我的需要就是知道如何在nios里控制一个信号的高低电平变化就够了,其它全是c语言的东西,主要是熟悉了quartus的开发平台,并用nios程序把要实现的主要代码用c写了一遍,通过了,但速 度上不去。有这些知识做铺垫后,就开始了项目的设计。项目要求将外部高速数据(40mb/s)进行存盘,并可以将存盘的数据在适当的时候原路返回(速度不变)。所以在硬件的设计上fpga选择了ep2c35f484c8n,外部有128m的sdram做为数据的缓冲。所以fpga的主要程序集中在atahost控制器(实现udma读写)、sdram控制器(大容量循环缓冲)上,当然还包括一些其它的控制,如实时时钟,usb2.0芯片控制,rs232的通信及相应的通信协议。

硬件完成后,大部分的时间都在写程序,感觉verilog跟c差不多,就将原来写成的c代码翻译了一下,每写一段代码就测试一下。起初并不知道在quartus里还有逻辑分析仪的功能,所以程序出了问题只能使劲的分析代码,猜想问题可能出在哪里,万不得已时才做一下仿真(后来看很多有做程序都先做仿真,仿真通过后再下载到目标板里运行测试,但到现在我的仿真关还没过),所以做得很累。我感到这样做下去到时间结点肯定结了不了项目,就找fpga的qq群向高手们请教经验,知道了可以quartus的逻辑分析仪来观察信号,哈哈,爽了(感谢感谢)。后面的程序找问题就容易多了,按照ata协议、sdram手册、及各外围芯片手册一步步写下去,当然其中也遇到了各种各样的问题,但很快得到解决。一直到 项目结束,都是用逻辑分析仪来找问题,没做过仿真(所以现在仿真关还没过)。今年又用fpga做了一些项目。简单说一下体会吧,归结起来就三个字:做、想、问。书读千遍,不如做一遍;看别人做百次,不如自己做一次;就是要实践。实践的动力一方面来自兴趣,别一方面来自己压力,我个人觉得后者更重要。有需求会容易形成压力,也就是说最好能在实际的项目开发中锻炼,而不是为了学习而学习。在做的过程中要多想,多想想问题出现的原因,问题解决后要多问几个为什么,这也是经验积累的过程,最好要写项目日志,把问题及原因、解决的办法都写进去。还要多问,遇到问题经历了痛苦的思索后还得不到解决就要问了,问搜索引擎,问网友,问同学同行,一篇文章、朋友们的点拨都可能帮助 自己快速解决问题。

fpga入门心得及系列资料

不知道为什么自己每次接受一个新事物,总要花上那么长的一段时间。每个东西,总要经过从一点都不了解,到有点了知道,到最后才想知道要来学学,但每次学习时也总是走马观花。可能真的受中国的教育思想束缚的太严重了吧。以前的人读书,好像也没有什么目标,只是知道上课要认真听,考试要考好。这样就可以了。也从来没想过,我学这个到底有什么用呢。但是上了大学后,一切都改变了。我们的学习也不再是为了考试而考试了。尤其是像我们学电子,假如仅仅是为考试的话,那你的大学完全可以过得很轻松,整天睡觉,游戏,照样可以考高分。那样毕业了,你说你的大学学习是不是等于0。到头来还是什么也不是。所以当你进入大学,当你选择了电子,就决定了你从此要为之付出。不管将来怎样,只要你朝着自己的方向走,一定会成功的。

现在说说fpga的学习吧,或许,很多人刚接触fpga时,可能还在为到底什么是cpld,什么时fpga,我到底要学习哪门语言而苦恼,不知大家是不是这样,但是我曾经就是这样,也到网上去找过,最后也终于找到了答案。因为那时身边的人都还没学过。其实cpld,fpga最大的区别也就是fpga的程序必须由配置芯片经过上电后,将程序写入芯片中,也就是fpga的内部存储器是相当于内存一样,一掉电就没了。而cpld是像单片机一样,程序是存储存在内部中的,一上电就可以跑了。二者的功能差不多,但是fpga的资源比cpld更加丰富。在cpld上可以实现的功能,在fpga上基本都可以实现的。所以也不必去想太多什么是fpga,cpld了,只要弄懂了二者的内部结构就可以了。

至于学什么语言吗,首先要看你们在校老师上课是用什么语言,就先那个语言吧,我们学校老师是用vhdl语言的,所以一开始我也是先学vhdl语言,而且学习资料比较多,但是在网上看到,好像公司里面用的比较多的是verilog hdl语言,为了能看懂一些资料,现在也在学verilog hdl语言,学习中发现,要是学过c语言的人,会发现verilog hdl好像更加好理解。

一旦你开始了学习fpga,那就要坚持下去,因为语言这东西,要是不一下子把它强记住,过不了两天就又忘了,书本的东西,一定要越快消化越好,这样你看别人的程序时就不会有什么语言障碍了。之后就是编写程序,模仿别人的模块,仿真实验,这步很重要,要不你就不会发现fpga功能的强大,你也不知道到底仿真的结果和实际是不是有差别。当你成功时,你一定会感到成功的喜悦。

当你基本的程序都看得懂时,有完整地编个程序,而且在硬件上实验过时,那么祝贺你入门了,之后的道路就是不断的实践,跟学习单片机一样,只有不断的学习,不断的做东西,你的编程能力才会提高。

以上仅仅为作者本人的一点观点,本人现在还是一个电子白菜,只是苦于自己学习电子找不到捷径,不想还有更多的人跟我一样,在电子的道路中不断摸索,不断徘徊。

看过一个高手对fpga的认识,自己对fpga未来的发展更是看好,鉴定了学好的决心,fpga在电子开发工作中已经上升到数字系统核心处理器,尽快掌握fpga开发技术显得非常迫切。总结了一下: 传统的开发方式:一半固定,硬件cpu是不可编程的,另一半灵活是可编程的软件

fpga新开发形式:两个部分都是可编程了,fpga,它代表的就是硬件的编程。这两部分都可编程的一个结合点就是fpga上的软核。另外可以根据需要通过外部单片机把合适的应用bit流写入到fpga内,从而完成根据功能需要变更硬件。硬件可重构!

使计算机的能力越来越强,方法一:通过提高工艺来提高工作频率;方法二:通过优化系统体系,并行!

新学习思想: fpga设计有点象围棋:易学难精 带着问题学习是最有效率的

时序性能的调整提高是fpga开发能力的标志

多看书,但要注意,书当做字典,不是所有地方都去看。

目前,在fpga上有三种类型开发方法和应用方向:a、逻辑类应用 b、软核类应用 c、dsp类应用。逻辑类应用我们接触的最早,也是fpga最初的应用领域,大的应用上,一些数字ic设计可以在fpga做前期的功能验证,在通信领域,fpga做信号的编解码等等,小的应用上我们做的最多的实际是cpld,完成信号的变换控制等等。软核应用是前几年才兴起,现在热门的开发应用方法,在原本需要fpga结合cpu的地方有成本和灵活性优势。

fpga的dsp应用是非常有潜力的,性能优势非常明显。开发方法是用matlab的simulink中嵌入厂商的开发工具包,算法验证在matlab simulink工具下完成,在开发工具包的支持下生成hdl模块或者直接生成fpga下载配置文件,这个方向是fpga应用最有挑战能力领域。mathworks公司不久前也推出了独立于fpga厂商的simulink hdl coder工具,使的matlab在数字系统设计领域迈出了坚实的一步,把simulink 模型和stateflow框图生成位真(bit-ture)、周期精确(cycle-accurate)、可综合的verilog和vhdl代码,为matlab simulink用户提供了通往fpga设计实现的直接通道。篇三:fpga学习心得大报告

《fpga技术基础》学习报告--课程内容学习心得

姓 名:

学 号: 年级专业: 指导教师:

李绍华 201110401132 自动化111薛晓军摘要从开始学fpga到现在粗略算来的话,已经有3个多月了,就目前而言,我并不确定自己算不算高手们所说的入门了,fpga学习总结。但是不管现在的水平如何,现在就总结一下自己学习它的感受或一些认识吧。

关键词; fpga de2板 quartusii软件 verilog语言

引言

fpga是什么?fpga现状?怎样学习fpga?

fpga是现场可编程门阵列的简称,fpga的应用领域最初为通信领域,但目前,随着信息产业和微电子技术的发展,可编程逻辑嵌入式系统设计技术已经成为信息产业最热门的技术之一,应用范围遍及航空航天、医疗、通讯、网络通讯、安防、广播、汽车电子、工业、消费类市场、测量测试等多个热门领域。并随着工艺的进步和技术的发展,向更多、更广泛的应用领域扩展。越来越多的设计也开始以asic转向fpga,fpga正以各种电子产品的形式进入了我们日常生活的各个角落。

正文

(1)掌握fpga的编程语言

在学习一门技术之前我们往往从它的编程语言开始,如同学习单片机一样,我们从c语言开始入门,当掌握了c语言之后,开发单片机应用程序也就不是什么难事了。学习fpga也是如此,fpga的编程语言有两种:vhdl和verilog,这两种语言都适合用于fpga的编程。(2)fpga实验尤为重要 除了学习编程语言以外,更重要的是实践,将自己设计的程序能够在真正的fpga里运行起来,这时我们需要选一块板子进行实验,我们选择使用de2板才进行试验。初识de2开发板

de2的资源de2的资源非常丰富,包括

1.核心的fpga芯片-cyclone ii 2c35 f672c6,从名称可以看出,它包含有35千个le,在altera的芯片系列中,不算最多,但也绝对够用。altera下载控制芯片-epcs16以及usb-blaste对jtag的支持。

2.存储用的芯片有: 512-kb sram,8-mbyte sdram,4-mbyte flash memory 3.经典io配置:拥有4个按钮,18个拨动开关,18个红色发光二极管,9个绿色发光二极管,8个七段数码管,16*2字符液晶显示屏,4.超强多媒体:24位cd音质音频芯片wm8731(mic输入+linein+ 标准音频输出),视频解码芯片(支持ntsc/pal制式),带有高速dac视屏输出vga模块。5.更多标准接口:通用串行总线usb控制模块以及a、b型接口,sd card接口,irda红外模块,10/100m自适应以太网络适配器,rs-232标准串口,ps/2键盘接口 6.其他:50m,27m晶振各一个,支持外部时钟,80针带保护电路的外接io 7.此外还有:配套的光盘资料,qutuarsii软件,niosii 6.0ide,例程与说明文档。

关于管脚分配

当我们创建一个fpga用户系统的时候,到最后要做的工作就是下载,在下载之前必须根据芯片的型号分配管脚,这样才能将程序中特定功能的管脚与实际中的fpga片外硬件电路一一对应。

fpga简单的说,就是现场可编程逻辑阵列。它的内部是逻辑单元,它们之间可以用线连接,至于以怎样的形式相连,则可以根据应用者写入的逻辑决定。每次布线都会重新组合逻辑单元,从而可以任意的编写不同的逻辑。当然,前提是定义的逻辑块不超出它可读写的最大值。总结在学习fpga时,遇到的问题有许多,譬如,写代码时的警告,特别是一些不能忽视的警告,每次遇到时,总是还要检查一会儿才能改过来,或者有的警告已经出现了几次,但是就是解决不掉。每次在学一个模块时,只要是看懂了,它的一些重点就没有及时的记录在本子上,只有个别的想起来时,才会做笔记。每做完一个模块,没有及时记录下自己从这个模块中学到了什么。上面的不足,都是在写模块的过程中,自己逐渐暴露出来的。我很庆幸自己的一些问题能及时的被发现,避免类似的事情再次发生。像遇到警告时,都要记录下来,通过改正后,要注释,写下警告的原因,定期看一下。每次写模块的时候,都要记下重点知识,即使是自己懂得的,好记性都是比不过烂笔头的。

FPGA连接检测方法 篇5

关键词:计算机工程,FPGA,连接检测,SignalTAP Ⅱ

1 引言

随着FPGA的广泛应用, 对单板上的FPGA连接检测的需求也日益增加。大容量的FPGA都采用了BGA封装, 这也让连接检测更加困难。而生产制造部门在生产实践中不可避免地会遇到一些FPGA焊接问题, 在返修时就迫切需要一些检测手段以确认故障点。本文根据使用FPGA单板的不同类型, 给出了可以供生产及返修人员查找FPGA是否有虚焊、断路及短路等连接问题以及定位问题引脚的两种方法:FPGA方波输出法与MCU地址数据总线扫描法。

2 FPGA的应用模式

根据单板上除了FPGA外是否有其他处理器, 可以将含FPGA的单板分成仅有FPGA的单板和有微处理器 (MCU) 的单板, 如图1所示。在这两种类型的单板上, FPGA的配置方式往往是不同的。

对于仅有FPGA的单板 (图1-a) , FPGA可以使用专门的FPGA配置芯片、串行Flash或者并行Flash作为FPGA配置镜像的载体, 单板上电时, FPGA主动从程序存储器中读取配置镜像并完成配置。在这种类型的单板上, FPGA是唯一的处理器, 所有的控制信号都由FPGA给出。

对于包含MCU的单板 (图1-b) , FPGA虽可以使用与 (a) 相同的配置方式, 但通常为了降低成本, 一般都通过MCU对FPGA进行配置, 当MCU启动完成后, 从程序存储器中读取FPGA配置镜像, 通过总线写入到FPGA中。在这种类型的单板上, MCU和FPGA在互通时, 控制信号一般由MCU给出, FPGA仅对MCU的控制给予响应, 而FPGA又可向单板上的其他互联设备发出控制信号。

3 FPGA连接检测方法

在上述两种不同类型的单板上, 需要采用不同的检测方法才能实现对所有引出的FPGA管脚进行连接检测。

3.1 FPGA方波输出法

FPGA方波输出法的基本思路是:FPGA向其管脚VDD上输出不同频率的方波, 如果FPGA在与其它芯片连DQ0VDDQ接正常, 那么在其他芯片的管脚上就可以测量到和VSSQDDQQ12FPGA输出频率相同的波形。如果互联的芯片管脚上VDDDQQD34Q没有测到波形, 就说明出现了断路或虚焊问题, 如果DQ6DQ5测量到的波形的高电平不能达到Vcc, 就说明有管脚VDNSQCS7Q发生了短路情况。D#VDQWDME0

FPGA方波输出法适用于FPGA作为主设备 (Host##) RASCAS的情况。因为此时FPGA可以根据需要自主决定管脚#ABC1AS10的输出, 而不需要担心出现信号冲突。BA1AA100

3.2 MCU地址数据总线扫描法

MCU地址数据总线扫描法的基本思路是:用MCU向FPGA输出不同的地址和不同的数据, 由FPGA中运行的信号检测软件观察MCU发来的信号, 通过对这些信号的分析来判断是否有断路或短路的情况发生。

检测MCU和FPGA的连接情况时, 在FPGA上运行信号检测软件, 并将和MCU连接的所有地址线, 数据线加入检测数据集, 由MCU向不同的地址输出不同的数据, 输出地址时, 每次仅将地址线中的1根置为1, 接着对该地址不断输出数据, 且每次仅将1位数据线置1;按这样的方法循环进行, 直到所有数据线和地址线全部被检测完成。

MCU地址数据总线扫描法适用于FPGA作为从设备 (Slave) 的情况。因为MCU可能有会访问多个从设备, 而且MCU的一些管脚, 如地址线只能是作为输出管脚使用, 此时如果使用FPGA方波输出就可能出现信号冲突, 进而造成单板上的器件损坏。

3.3 FPGA单板连接检测例子

3.3.1 仅有FPGA的单板连接检测例子

在仅有FPGA的单板上, FPGA作为主设备, 可以使用FPGA方波输出法。

以检测一块使用Altera公司的CycloneⅣ系列FPGA为主处理器的单板为例。在该单板上有一块型号为IS42S32800D的SDRAM芯片和FPGA互联, 其引脚排布如图2所示, FPGA使用并行Flash作为配置芯片。检测流程如图3-a) 所示。

编写专门的FPGA程序, 在该程序中, FPGA向各引出的管脚输出频率不同的方波 (各管脚频率设置见图2中的表格) , 并且用示波器测量与FPGA互联的SDRAM管脚, 通过测量可以知道连接是否正常。

3.3.2 包含MCU和FPGA的单板连接检测例子

以一块包含MCU和Altera公司的CycloneⅣ系列FPGA的单板为例, 说明检测MCU和FPGA的连接情况。

FPGA和其他芯片间的互联, 可以通过FPGA方波输出法检测, MCU和FPGA间的连接, 可以通过MCU地址数据总线扫描法进行。

首先通过FPGA的JTAG下载一个包含信号检测软件Signal TAP II的程序, 将地址总线、数据总线、片选线、写信号和读信号都加入Signal TAP II的监视数据集[1], 并且以片选线作为触发信号, 观察Signal TAP II中的信息。

在MCU上执行地址和数据总线扫描程序, 程序片段如下:

测试流程框图如图3-b) 所示, 测试实例结果如图4所示。

通过分析Signal TAP II中的信号, 可以观察到数据集内的数据和MCU的操作序列是否匹配, 还可以观察到地址总线、数据总线的变化和MCU程序实际输出是否一致, 就可以获知连线情况了。比如MCU依次将地址线的A0, A1, A2……A21置1, 如果在Signal TAP II上发现有一个地址线没有变化, 那么就说明MCU的该地址线和FPGA的连接发生了问题。对数据总线也可用同样的方法判断。

4 结论

根据不同单板的类型, 恰当使用FPGA方波输出法和MCU地址数据总线扫描法, 可以很好地检测出单板上FPGA的连接情况, 为生产制造中的单板检修提供了帮助。

参考文献

数字频率合成器的FPGA实现 篇6

摘要:介绍了DDFS的原理和Altera公司的FPGA器件ACEX 1K的主要特点,给出了用ACEX 1K系列器件EP1K10TC144-1实现数字频率合成器的工作原理、设计思路、电路结构和仿真结果。

关键词:DDFS;FPGA;快速通道互连;仿真

1 概述

1971年,美国学者J.Tierncy,C.M.Rader和B.Gold提出了以全数字技术,从相位概念出发直接合成所需波形的一种新的频率合成方法。限于当时的技术和器件水平,它的性能指标尚不能与已有技术相比,故未受到重视。近30年间,随着集成电路技术和器件水平的提高,一种新的频率合成技术――直接数字频率合成(DDFS)得到了飞速的发展,它以有别于其它频率合成方法的优越性能和特点成为现代频率合成技术中的佼佼者。

随着微电子技术的发展?现场可编程门阵列?FPGA?器件得到了飞速发展。由于该器件具有工作速度快,集成度高和现场可编程等优点,因而在数字信号处理中得到了广泛应用,越来越受到硬件电路设计工程师们的青睐。直接数字频率合成(DDFS)技术以其具有频率分辨率高,频率变换速度快,相位可连续线性变化等特点,而在数字通信系统中被广泛采用。本文基于DDFS的基本原理,给出了利用AL-TERA公司的FPGA芯片(ACEX 1K系列EP1K10TC144-1器件)完成DDFS系统设计的具体方法。

(本网网收集整理)

ACEX 1K系列器件是Altera公司着眼于通信(如Xdsl?路由器等)、音频处理及类似场合的应用而推出的新型芯片系列。ACEX 1K系列器件具有以下特性:

(1)采用查找表(LUT)和EAB相结合的结构模式,可提供高效低功耗的优良性能。因为LUT结构适用于实现高效的数据通道、增强型寄存器、数学运算及数字信号处理设计,而EAB结构可实现复杂的逻辑功能和存储器功能。

(2) 密度高,典型门数为1万到10万门,有多达49152位的RAM(每个EAB有4096个RAM)。

(3)系统内核采用2.5V电压,I/O脚可支持2.5V/3.5V/5.0V多电压标准;器件功耗低;具有高达250MHz的双向I/O功能;完全支持33MHz的PCI总线标准;内置JTAG边界扫描电路;不需测试矢量和扫描链即可对所有器件进行100%的功能测试。

?4?具有快速连续式延时可预测的快速通道互连(FAST TRACK);能实现快速加法器、计数器和比较器等算术运算功能;具有专用链和实现高速多扇入逻辑功能的专用级链;具有能实现内部三态总线的三态仿真;具有多达6个全局时钟信号和4个全局清除信号。

(5)每个引脚都有独特的三态输出使能控制;可编程输出的压摆率控制可以减少电平转换产生的噪声;引脚与引脚间具有用户可选的钳位电路;支持热插拔操作。

2 DDFS基本原理

DDFS技术是一种可把一系列数字量形式信号通过DAC转换成模拟量形式信号的合成技术。目前使用最广泛的一种DDFS方式是利用高速存储器作查寻表,然后通过高速DAC产生已用数字形式存入的正弦波。图1是DDFS的`基本原理图。

2.1 相位累加器

相位累加器由N位加法器与N位累加寄存器级联构成。时钟脉冲每触发一次,加法器便将频率控制数据与累加寄存器输出的累加相位数据相加,然后把相加后的结果送至累加寄存器的数据输入端。累加寄存器将加法器在上一个时钟作用后所产生的新相位数据反馈到加法器的输入端,以使加法器在下一个时钟的作用下继续与频率控制数据相加。这样,相位累加器在参考时钟的作用下将进行线性相位累加,相位累加器累加满量时,就会产生一次溢出,以完成一个周期性的动作,这个周期就是DDFS合成信号的一个频率周期,累加器的溢出频率就是DDFS输出的信号频率。

2.2 相位-幅值转换

用相位累加器输出的数据作为取样地址来对正弦波波形存储器进行相位-幅值转换,即可在给定的时间上确定输出的波形幅值。

2.3 数模转换

通过DAC可将数字量形式的波形幅值转换成所要求的合成频率模拟量形式信号,低通滤波器用于衰减和滤除不需要的取样分量,以便输出频谱纯净的正弦波信号。

对于计数容量为2N的相位累加器和具有M个相位取样的正弦波波形存储器,若频率控制字为K,则DDS系统输出信号的频率为:fo=fc×K/2N,而

频率分辨率则为:Δf=fomin=fc/2N。3 基于FPGA的DDFS结构设计

图2是利用DDFS原理设计的一个信号源发生器的结构框图。图中,FPGA用来控制输出波形的频率、相位和波形的选择。波形数据的存放有两种形式,一种是将固定波形数据存放在EEPROM里,主要有正弦波,三角波,锯齿波?包括半正弦波,半三角波,半锯齿波?数据。而对于特殊的波形,则通过上位机下载到RAM里,然后从RAM里读取数据。

该系统在工作时,首先由上位机把控制命令和数据参数通过USB接口用AT96总线传给FPGA。如果是固定波形,就从EEPROM中读取数据,否则就从RAM中读取数据。数据传送给FPGA后即可等待触发信号,触发信号由时基卡或软件给出。触发信号到来之后,就开始读取数据并输出波形。同时由FPGA给上位机一个状态位,该状态位可用于表示发送波形是正在发送,还是已经发送结束了。

信号源的输出频率范围分为如下几档:0.001Hz~1Hz? 1Hz~10Hz? 10Hz~100Hz;100Hz~200Hz,步进为1/1000。之所以分档控制,是为了保证输出波形频率具有更高的精度,在输出波形频率较低时可对数据不抽点,频率较高时应进行抽点。要达到较高的频率精度,必须利用数字频率合成器(DDFS)来实现对输出波形频率的控制?并按频率要求对相位增量进行累加,然后以累加相位值作为地址码来读取存放在存储器中的波形数据。通过改变相位增量寄存器的增量值(即步长),使相位累加器能够输出依据相位增量寄存器所给出的步长来改变波形存储器的地址,从而改变波形每周期的点数,从而达到改变输出波形频率的目的。该电路的设计关键在于用硬件构造一个多位累加器来实现相位的累加。

根据DDFS的原理,输出信号频率fo与累加器时钟fclk、累加器位数M、相位增量N的关系如下:

fo=(fclk×N)/2M

根据以上原理,结合实际情况可得到的各项参数(这里采用32.768MHz=1000×215的晶振频率)。为了保证所需的精度以及输出波形频率的步进。这里选M=27。由于D/A的最大转换速度为1MHz,波形每个周期的样点数是128k,因此当输出波形的频率大于8Hz时,一般就需要进行抽样。

图3

对于RAM和EEPROM的寻址可通过以下两种方式来实现:

(1)基于EEPROM的寻址方式

这种方式首先用累加器实现地址的寻址,然后通过改变累加器的第24位和第25位(A15和A16)的所赋初值来改变发送波形的初始相位。

由于发送波形的结束时刻可通过一个减法计数器来实现,而且波形周期寄存器里寄存的是T/4的个数。因此,可根据所需发送的波形周期的个数来给计数器赋初值,并在减到0时使累加器复位,从而停止寻址。此时时钟应接A14。

EEPROM里面可以存放4种波形,每一种波形的数据是64kB。波形的选择可通过给A17和A18赋初值来实现。

(2)对RAM的寻址方式

RAM共有1MB的容量,因此,可寻址20位的地址。对于RAM里面的波形,只需要控制样点频率和发送波形的结束时刻即可。

结束时刻的实现主要是将结束时刻值存放到寄存器中,然后把计数器的输出和寄存器的值进行比较,若两者相等就给计数器发送复位信号以停止计数,以结束发送波形。

这里的计数器是加1计数,因而可通过改变分频器的值来改变计数器的时钟,从而引起读取样点频率的改变。

图4

4 电路仿真

通过上述结构设计可得到顶层电路结构。整个电路设计可采用Verilog语言和原理图输入相结合的方法来设计。图3和图4分别给出了对RAM和EEPROM进行寻址的仿真结果。5 结论

上一篇:建筑工程监理实习报告下一篇:演讲面试题目