导航:首页 > 编程语言 > 实用C语言FPGA编程

实用C语言FPGA编程

发布时间:2023-01-03 12:36:56

⑴ C程序和FPGA程序

C语言是目前世界上流行、使用最广泛的面向过程的高级程序设计语言。 C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。
C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。

运算符丰富
C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。

数据结构丰富
C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。

FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。
FPGA一般来说比ASIC(专用集成电路)的速度要慢,实现同样的功能比ASIC电路面积要大。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)。

⑵ FPGA的编程语言跟C语言有什么不同

学FPGA给我最大的体会就是它的编程语言是并行执行的,不像C语言那样一行一行的执行。verilog里面有个always语句,所有的always语句块全部并发执行,而always语句块内部是逐行执行的(前提是只是用阻塞赋值)。
verilog中没有中断的概念,而逐行执行指令的C语言却离不开中断。
学习verilog必须要掌握最基本的概念,像上面的阻塞赋值等等,新手都要经历这一关的,呵呵。
还有,verilog是始终离不开硬件,c语言中可以不限制循环次数,而verilog就不行,因为每循环一次就会增加FPGA内部资源的占用。
最后在说一点儿,verilog中有的语句不能被综合(Oh,什么是综合?,网络吧),像定义浮点的float就不可以,在编程时慎用。
好啦就说这些吧。。

⑶ FPGA编程

今年电子大赛的时候做过一个,不过是基于XILINX公司的FPGA的,我给你介绍一下思路吧。

还有就是不知道你的信号发生器要求频率和精度是多少

一般有两种实现方式:一种是控制AD输出模拟量,另一种是通过SPWM和低通整流而来

本程序是第二种

工作机理有两部分组成:PWM的产生和表

产生部分由两个寄存器和一个计数器组成,计数器不听累加同时与两个寄存器作比较,两个寄存器一个控制置底一个控制拉高,一般把一个固定就行了(有的地方说是一个控制周期一个控制高电平时间,其实是一样的)

表里放的是一个正弦数组(产生正弦波),之后有一个寄存器控制读取表的速度(间隔),把读取出的表值存入上面那个没固定的寄存器就行了

http://blog.sina.com.cn/s/blog_6e22b1da0100n52r.html

我的博客里有一篇关于SPWM模式的DDS的文章
你可以看一看
不懂得话可以给我留言

A/D转换的方法要比SPWM的方法简单,首先你要新建一个存储空间,里面存上A/D的电压控制量的一维数组,数组中存在的数值对应的电压从前到后呈正弦波形排列,每个周期从数组中每隔n个元素依次读取数组付给A/D转换器,这样A/D就可以输出正弦波了,而里面的n步进是由一个寄存器控制的,n的大小决定了你的频率。

至于你说的液晶显示,按键等。我建议你用SOPC实现,Alter公司有Nois2的ip核。它相当于把FPGA当单片机用,你将液晶控制、按键控制、波形生成分别变成自定义IP核集成于系统,之后在顶层用C语言实现目的即可。

如果你不会HDL语言的话,必须先把它学了。如果你不了解SOPC的话,给你介绍一个很好的资料,估计你按这个一步一步来,1周就能学会。
http://wenku..com/view/dd7ade360b4c2e3f57276360.html

这是网络文库的链接,一共是五章,你可以自己搜索。

今年的电子大赛FPGA组的比赛有不少省市都和你这道题有关,虽然是XILINX公司的,但是大同小异。

阅读全文

与实用C语言FPGA编程相关的资料

热点内容
dvd光盘存储汉子算法 浏览:757
苹果邮件无法连接服务器地址 浏览:962
phpffmpeg转码 浏览:671
长沙好玩的解压项目 浏览:142
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:732
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:484
h3c光纤全工半全工设置命令 浏览:141
公司法pdf下载 浏览:381
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:349
风翼app为什么进不去了 浏览:778
im4java压缩图片 浏览:362
数据查询网站源码 浏览:150
伊克塞尔文档怎么进行加密 浏览:890
app转账是什么 浏览:163