MAX6299MTT在CPLD上的应用
1. MAX6299MTT的资料可以翻阅其datasheet.
2. 信号的时序逻辑设计
3. 电路的焊接,SO上最好加一上拉电阻(33K),3.3V,耦合电容(0.1u)
070625:
第一版完成,可以得到CS,SCK信号,由于传感器还没到位,所以还不能检测SO信号,sign信号。
070627:
鉴于传感器还没有到位,准备加入2路开关,用来尝试做下实验。
一路(暂定为红)按下,使之初始化输出数据为25度;
另一路(暂定为灰)按下,使之输出传感器的数据。
070628:
传感器到后,遇到了一系列的问题,不过前面已经有同事用VHDL做过LM95071温度传感器的数据读写。所以在参考她的基础上,进展还算顺利。
首先是数据的乱显示,这个在把程序结构调整后,就不再出现。不过两位数码管自此始终显示“00”。
然后尝试着手动输入25度的二进制码,显示“25”没问题。
用CPLD的其他引脚得到输出,发觉始终为低,这也就是为什么始终显示“00”的原因了。应该是没有输出。然后用调试引脚放到程序的各个地方,看其显示,发现是if判断语句的问题,想当然的以为datacount会到达0,但其实只到1就停止,大概是SCK下降沿在无意中由于延时的原因被吃掉了一个。不过由于最后两位数据为不定,不需要。所以也就不影响读值了(到现在的原因解释,未必正确)。
同事总结的问题,在读取温度传感器的输出时,一定要一次读取完毕,然后再进行处理。
芯片选取信号CS,芯片时钟信号SCK的制作。
CLK: 20MHz à 50ns
SCK: 2.5MHz à 400ns 在CS为低的时候。高的时候保持高
CLKTemp: 0.15625MHz à 50ns*128 = 6.4us
CS: 78125*6.4=480.8ms 为高(保证转换时间),6.4us为低
SO:加一上拉电阻33K,3.3V电压
修正小数读取问题,>=0.5时,进位。
遇到的问题:
1. 在SCK信号的设计中,由于把倍频的数据弄错,导致出现没有SCK信号,由此导致了很多的warning,典型如下:
Warning (10030): Tied undriven net "SClkout" at SerialClk.vhd(34) to 0
Warning: No clock transition on "TempData[13]" register due to stuck clock or clock enable
Warning: Reduced register "TempData[13]" with stuck clock port to stuck value GND
--后面两项是牵扯到的信号
・未改掉的warning
Warning: Found pins functioning as undefined clocks and/or memory enables
Info: Assuming node "CLK" is an undefined clock
Warning: Found 1 node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew
Info: Detected ripple clock "SerialClk:SerialClkIN|SClkout" as buffer
Warning信号如网上所说,基本上可以不用关心,因为一般不会影响结果。
2. wave信号仿真
File à New à Other Files à Vector Waveform File àcreate
导入节点或者总线
设置:Edit à End time AND Grid size 中对模拟时序的设置。
3. 未完
信号表
信号名
|
入力/出力
|
説 明
|
CLK
|
入力
|
CPLD时钟信号20MHz;引脚pin62
|
SO
|
入力
|
温度传感器输出脚;引脚pin27
|
CS
|
buffer
|
片选信号;引脚pin19
|
SCK
|
buffer
|
温度传感器时钟信号;引脚pin21
|
Sign
|
出力
|
正负显示值;引脚pin61
|
LED1
|
出力
|
输出温度值10位
|
LED2
|
出力
|
输出温度值个位
|
来源:CSDN
作者:skyyunmi
链接:https://blog.csdn.net/skyyunmi/article/details/1671014