时间:2024-07-29 来源:网络搜集 关于我们 0
如何开始一个FPGA项目,首先要做的就是认识这个项目。举一个容易的项目的例子。现在有很多能控制温度的智能设备,空调呀冰箱呀热水杯呀,可以先用FPGA实现一个温度的测量功能。
明确需求,进行分析,需要的是温度传感器进行温度测量,然后用FPGA来处理这个温度测量数据,这就涉及到一个连接的问题,如何把温度传感器数据传给FPGA呢,首先要知道有哪些温度传感器,最常见的就是铂电阻(pt100,pt500,pt1000),然后是18B20数字温度传感器。铂电阻就是一个电阻值能够随着温度变化而变化的电阻,这个变化是个近似线性的变化。我们测阻值就可以知道温度,在电路板中我们通过测量铂电阻电压来知道温度,电压是模拟量,需要经过ad采样为数字量,因为用FPGA处理,得接入数字信号才行,而且电平范围得是FPGA能够承受的,一般来说FPGA的管脚能够承受3.3v的电平。所以需要的主要元器件为温度传感器,ad采样芯片,电平转换芯片(比如5v转3.3v),FPGA等。
18B20方案就容易一些,不需要ad采样和电平转换,18B20一共三个引脚,一个3.3v一个地,还有一个1位总线,这个总线直接连在FPGA的io管脚上就行。硬件方案定了,还有软件方案,18B20总线是有协议的,规定了如何把数据传给FPGA。这个就需要用硬件描述语言进行编程,来实现这个传数的功能。相关的代码网上有很多,可以学习。当然他们给的都是子模块代码,自己用就得在top文件中进行例化。类似于c语言的函数调用,编好了函数,得使用它,它才会有用。FPGA首先要学会用写好的代码来实现自己想要的功能,在实现功能的时候就会慢慢明白这些代码是怎么运行的了,在实践中学习是最有用的。
18B20方案,我们有了实现18B20与FPGA传数的代码,然后在top文件进行了例化,能采到数据了,然后想看到这个温度值,最简单的方法就是用串口。首先有一个协议叫异步串行通信协议,规定了一种接收和发送数据的数据格式,可以实现一位一位的发送,比如发一个字节数据,一个字节有8位,以某种速率一位一位的发送,这个速率(也叫波特率,比如921600,一秒收发921600位)根据不同的硬件,有不同的限制,比如232接口速度慢,485接口速度快,是根据他们硬件上的特性决定的。假如使用485接口,那就需要一个485芯片,该芯片一端接FPGA,另一端接串口转usb转换器,转换器再接上位机(笔记本什么的) 。硬件有了,还是需要根据异步串行通信协议来编写一个串口收发程序,网上也有,作为子模块,在顶层文件中例化。假如18B20通过1位总线每秒传一个16位的数据给FPGA,FPGA执行程序,接收这个数据(简化的说法,实际根据协议操作),然后执行串口程序,数据通过串口发送给了上位机。这时候上位机可以通过串口助手读到这个16位,自己换算一下就得到温度值了。所有芯片都需要看芯片手册来使用。