新闻中心

EEPW首页>EDA/PCB>设计应用> 基于FPGA控制的温度检测无线发射接收系统

基于FPGA控制的温度检测无线发射接收系统

作者: 时间:2010-07-06 来源:网络 收藏

温度寄存器通常存放着一个11位的二进制数的补码,用来实现0.125℃的精度。这个高精度在需要精确地测量温度偏移或超出限制范围的应用中非常有用。
正常工作模式下,当器件上电时,OS工作在比较器模式,温度阈值为80℃,滞后75℃,这时,LM75A就可用作一个具有以上预定义温度设定点的独立的温度控制器。
1.2 温度传感器控制原理
如果将温度传感器设定为正常工作模式,那么首先要向配置寄存器写入控制字告诉器件的工作模式。写配置寄存器时序如图2所示。

本文引用地址://m.amcfsurvey.com/article/191656.htm


写配置寄存器首先要选择器件的地址,即A0-A2设置与硬件地址A0-A2一样。然后是写入配置寄存器地址指针,配置寄存器指针为”0000-000l”。等待器件应答一个SCL周期,再写入工作模式控制字。如果设置在正常工作模式下,OS设置为比较输出,那么配置数据字应写入”00000000”。
写入配置寄存器控制字”00000000”后温度传感器工作在正常工作模式下,即每一段时间温度传感器将温度转换成数字信号存放在温度寄存器里,所以只需要将温度寄存器的数据读出再加以计算即可以得到温度数据。读取温度寄存器的时序如图3所示。


读取温度寄存器时首先是选中器件,地址信号应该与硬件设置地址一致。第二段是选择温度寄存器,温度寄存器指针地址P1-P0写入”0-0”,表示下次操作的默认寄存器为器件的温度寄存器。重新起始后再次选中器件并读取温度寄存器的十六位的温度数据,并将十六位的数据的有效数据前十一位提取出,即可得到有效的温度数据。将温度数据与预设的温度比较后得出升温或降温信号,连接到模块的KEYl、KEY2上发射到接收端。接收端接收到信号后再经过放大后便可驱动步进电机等。

2 时序的实现方法
与其它逻辑语言的运行有很大区别,最大的区别就是是硬件语言,而不是类似于c语言的程序。VHDL下载后生成的是逻辑硬件电路,不是控制器控制执行的逻辑语句。VHDL语言每个进程之间是并行运行的,但是进程内部的语句却又是顺序执行的。而且每个信号的传输都是在所在进程结束的时候进行的。这点很重要,比如你对一个信号前后两次赋值,哪怕你中间有很多运算最终的结果还是最后一次赋值的结果,前一次赋值将是无效的,且会在报告中弹出一个警告。每个process的运行是靠敏感信号触发的,敏感信号放在process后面的括号中。所以对于VHDL语言来说循环语句不是很必要的,因为每次敏感信号变化该进程将从程序的第一句开始重新运行一次。意味着一个进程本来就是一个循环,只有变化的部分的信号才能得到改变。这一点与普通逻辑语言有很大的区别。
对于时序的实现有很多方法,可以用case语句实现,也可以用if语句实现。但是最有效和合乎逻辑的方法是用状态机实现。以下是状态机的模型。

状态机逻辑清晰,在每个对应的状态下将每个信号应该进行的操作放在对应的状态机程序中,严格控制各个信号的时序要求则可精确地实现高速控制。而且比单片机具有更高的速度。



评论


相关推荐

技术专区

关闭