基于FPGA的VHDL语言温度控制Word文件下载.docx

上传人:b****4 文档编号:6770929 上传时间:2023-05-07 格式:DOCX 页数:25 大小:25.98KB
下载 相关 举报
基于FPGA的VHDL语言温度控制Word文件下载.docx_第1页
第1页 / 共25页
基于FPGA的VHDL语言温度控制Word文件下载.docx_第2页
第2页 / 共25页
基于FPGA的VHDL语言温度控制Word文件下载.docx_第3页
第3页 / 共25页
基于FPGA的VHDL语言温度控制Word文件下载.docx_第4页
第4页 / 共25页
基于FPGA的VHDL语言温度控制Word文件下载.docx_第5页
第5页 / 共25页
基于FPGA的VHDL语言温度控制Word文件下载.docx_第6页
第6页 / 共25页
基于FPGA的VHDL语言温度控制Word文件下载.docx_第7页
第7页 / 共25页
基于FPGA的VHDL语言温度控制Word文件下载.docx_第8页
第8页 / 共25页
基于FPGA的VHDL语言温度控制Word文件下载.docx_第9页
第9页 / 共25页
基于FPGA的VHDL语言温度控制Word文件下载.docx_第10页
第10页 / 共25页
基于FPGA的VHDL语言温度控制Word文件下载.docx_第11页
第11页 / 共25页
基于FPGA的VHDL语言温度控制Word文件下载.docx_第12页
第12页 / 共25页
基于FPGA的VHDL语言温度控制Word文件下载.docx_第13页
第13页 / 共25页
基于FPGA的VHDL语言温度控制Word文件下载.docx_第14页
第14页 / 共25页
基于FPGA的VHDL语言温度控制Word文件下载.docx_第15页
第15页 / 共25页
基于FPGA的VHDL语言温度控制Word文件下载.docx_第16页
第16页 / 共25页
基于FPGA的VHDL语言温度控制Word文件下载.docx_第17页
第17页 / 共25页
基于FPGA的VHDL语言温度控制Word文件下载.docx_第18页
第18页 / 共25页
基于FPGA的VHDL语言温度控制Word文件下载.docx_第19页
第19页 / 共25页
基于FPGA的VHDL语言温度控制Word文件下载.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于FPGA的VHDL语言温度控制Word文件下载.docx

《基于FPGA的VHDL语言温度控制Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于FPGA的VHDL语言温度控制Word文件下载.docx(25页珍藏版)》请在冰点文库上搜索。

基于FPGA的VHDL语言温度控制Word文件下载.docx

键盘模块的脉冲输入来自分频模块。

其中,输入端口为两位二进制数,分别接两个按键,来对预设温度进行加减调控。

输出有两个端口,xianshi端口作为保留端口,存储着当前预设温度的数值,可外接显示设备。

zhi端口为信息传送端口,其存储值为当前预设温度值经由采集电路温度—电压公式换算后的十进制数值。

换算公式如下:

例:

38摄氏度对应的ADC0809输出数据为5*38*256/100/5,得到十进制值为97;

(1)

(2)

图中,shuru

(1)为温度减按键,shuru(0)为温度加按键,相应的预设温度对应相应的ADC0809输出值,由图2得,当预设温度为38摄氏度时,对应换算后的ADC0809输出数据为97,与计算相符。

键盘输入模块工作正常。

键盘模块的VHDL文件见附录2.

ADC0809控制模块:

经查阅资料,DAC0832需采用直通式,故,将DAC0832的控制语句直接写在了ADC0809的控制语句块。

ile为输出到ADC0832的输入锁存允许信号,cont为ADC0832WR1,WR2,CS等引脚。

Wendu为预设温度的输入引脚。

din为ADC0809转换后的输出信号,dout为受FPGA控制的输出到DAC0832的控制信号。

clk8为来自为频器的时钟信号。

根据ADC0809的时序图,总结出相应的状态转移图,一次来编写控制ADC0809的VHDL语言文件,状态转移图如下:

 

具体波形仿真图如下:

波形仿真建立在预设温度为38摄氏度的条件下。

前面提到,38摄氏度对应的ADC0809输出值为97,VHDL程序中设定,当ADC0809输入值大于或等于97时(当前温度大于或等于预设温度),FPGA输出到DAC0832的控制信号为0,即停止加热。

当ADC0809输入值小于92(即36摄氏度,与设定温度相差大于两度)时,FPGA输出到DAC0832的控制信号为255,即以最大功率加热。

当ADC0809输入值小于92时,将会细分为5个阶段,即以逐次递减的功率加热。

由图可知,ADC0809工作正常。

ADC0809模块的VHDL仿真文件见附录3.

最后,将三个模块运用元件例化语句连接在一块,并进行电路观察,生成相应的逻辑电路,如下图:

总体波形仿真如下图

波形分析:

刚开始,FPGAjia置1,预设温度逐渐增加,如下图

当温度到达38摄氏度后停止增加,即将38摄氏度作为预设温度,随后,观察FPGAin与FPGAout。

当预设温度为38摄氏度时,输入为97时,对应输出为0,当为92时,对应输出为5,当为96时,对应输出为1,当输入不在92-97之间,输入大于97时,输出为0,输入小与92时,输出为255.观察上图波形仿真,完全符合程序设计。

后面给FPGAjian置1,预设温度会随之降低。

总体的VHDL程序见附录4.

附录1:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

entityfenpinis

port(clk:

instd_logic;

--外部输入时钟源

clk1:

outstd_logic);

endfenpin;

--分频后的时钟源

architectureboffenpinis

signalcount:

std_logic_vector(7downto0);

--信号定义

signalclk2:

std_logic;

begin

process(clk)

begin

if(clk'

eventandclk='

1'

)then--计数脉冲上升沿

if(count="

01000000"

)then

count<

=(others=>

'

0'

);

clk2<

=notclk2;

--当达到64个脉冲时count置0,clk2取反

else

count<

=count+1;

--未达到64脉冲时继续计数;

endif;

endif;

clk1<

=clk2;

——将产生的分频信号给输出端口

endprocess;

endb;

附录2:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entityjianpanis

port(clk:

--分频后的时钟输入

shuru:

instd_logic_vector(1downto0);

--输入端,按键加0位,按键减1位

zhi:

outinteger;

--预设温度转化为ADC0809输出值

xianshi:

outinteger);

--当前预设温度

endentity;

architecturebehaofjianpanis

signalx:

integerrange0to200;

--定义信号

process(clk)

begin

caseshuruis--检测是否有输入

when"

01"

=>

x<

=x+1;

--按键加按下,温度+1

10"

if(x=0)thenx<

=0;

--按键减按下,判断温度是否为0

elsex<

=x-1;

--若为0,则依旧为0,否则,温度-1

whenothers=>

=x;

--其他按键情况,温度不变

endcase;

xianshi<

--将温度赋给显示输出端

zhi<

=x*5*256/100/5;

--将温度转化后赋给输出端

endbeha;

附录3:

libraryieee;

entityADC0809is

port(din:

instd_logic_vector(7downto0);

--ADC0809输出的采样数据

clk8:

--时钟信号

eoc:

--ADC0809转换结束指示,高电平有效

ale:

outstd_logic;

--ADC0809地址锁存次信号

ile:

outstd_logic;

--DAC0832数据锁存允许

cont:

--DAC0832控制信号(WR1,WR2,CS,Xfer)

start:

--ADC0809转换启动信号

oe:

--ADC0809数据输出允许信号

wendu:

ininteger;

--温度显示

adda:

--ADC0809信号通道控制位

addb:

addc:

lock0:

--ADC0809观察数据锁存时钟

dout:

outstd_logic_vector(7downto0));

--输出到DAC0832的8位数据

endADC0809;

architecturebehaofADC0809is

typestatesis(st0,st1,st2,st3,st4);

--定义ADC0809工作状态

signalcurrent_state,next_state:

states:

=st0;

signalregl:

std_logic_vector(7downto0);

signalshuchu:

signallock:

std_logic;

adda<

='

;

--地址输入001,选择IN1

addb<

addc<

dout<

=shuchu;

-将处理后的数据传输到输出端口

lock0<

=lock;

--数据传输

ile<

--DAC0832的控制信号

cont<

:

process(current_state,eoc)--状态转移

casecurrent_stateis

whenst0=>

ale<

start<

lock<

oe<

next_state<

=st1;

whenst1=>

=st2;

whenst2=>

if(eoc='

)thennext_state<

=st3;

elsenext_state<

whenst3=>

=st4;

whenst4=>

endprocess;

reg:

process(clk8)

if(clk8'

eventandclk8='

thencurrent_state<

=next_state;

--在时钟上升沿改变状态

endprocessreg;

latch1:

process(lock)

iflock='

andlock'

eventthenregl<

=din;

--将输入数据赋给中间变量

endprocesslatch1;

kongzhi:

process(regl)

if(regl<

wendu)then--判断输入数据与预设温度的大小

casewendu-reglis--判断输入数据与预设温度的

00000101"

shuchu<

="

--差值为5时输出控制信号5

00000100"

--差值为4时输出控制信号4

00000011"

--差值为3时输出控制信号3

00000010"

--差值为2时输出控制信号2

00000001"

--差值为1时输出控制信号1

11111111"

--差值大于5时输出255

elseshuchu<

00000000"

--当前温度大于预设温度,输出0

endprocesskongzhi;

附录4:

entityFPGAis

port(clkin:

--定义外部时钟端口

FPGAeoc:

FPGAin:

FPGAout:

outstd_logic_vector(7downto0);

FPGAale:

FPGAjia:

FPGAjian:

FPGAwendu:

FPGAile:

FPGAcont:

FPGAstart:

FPGAoe:

FPGAadda:

FPGAaddb:

FPGAaddc:

outstd_logic);

architecturebehaofFPGAis

componentADC0809is--元件例化声明

endcomponent;

componentfenpinis--元件例化声明

port(clk:

componentjianpanis

port(clk:

xianshi:

signalc:

--定义中间变量

signaln:

integer;

U0:

fenpinportmap(clk=>

clkin,clk1=>

c);

--元件例化

U1:

ADC0809portmap(clk8=>

c,wendu=>

n,din=>

FPGAin,eoc=>

FPGAeoc,dout=>

FPGAout,ale=>

FPGAale,ile=>

FPGAile,

cont=>

FPGAcont,start=>

FPGAstart,oe=>

FPGAoe,adda=>

FPGAadda,addb=>

FPGAaddb,addc=>

FPGAaddc);

U2:

jianpanportmap(clk=>

c,shuru

(1)=>

FPGAjian,shuru(0)=>

FPGAjia,zhi=>

n,xianshi=>

FPGAwendu);

-当达到64个脉冲时count置0,clk2取反

out

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 城乡园林规划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2