基于FPGA的SOC数字温度计论文Word文件下载.docx
- 文档编号:21906680
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:28
- 大小:1.72MB
基于FPGA的SOC数字温度计论文Word文件下载.docx
《基于FPGA的SOC数字温度计论文Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于FPGA的SOC数字温度计论文Word文件下载.docx(28页珍藏版)》请在冰豆网上搜索。
5.2NiosIIC程序15
6硬件设计16
6.1FPGA系统板扩展小板电路设计16
6.2FPGA系统板扩展小板调试17
7结论17
谢辞18
参考文献19
附录20
附录一18B20IP核接口代码20
附录二数据管IP核源代码22
引言
FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
随着科学技术以及嵌入式设备的普及,FPGA已不局现于做硬件。
基于FPGA的可编程片上系统(SOPC)也得到了广泛的应用。
可编程片上系统(SOPC)是一种特殊的嵌入式系统:
首先它是片上系统(SOC),即由单个芯片完成整个系统的主要逻辑功能;
其次,它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。
温度的数字化给人们生产生活带来了极大的方便。
因此,研究数字温度计及其应用,有着非常现实的意义。
正是基于这个原因,本文提出了一种新颖的数字温度计实现方式:
采用SOPC软硬件结合的方式。
其中,SOPC使用的是Atera公司的NiosII平台。
1系统总体框图设计
系统包括NiosII处理器,18B20IP核和数码管IP核组成。
外围硬件接在IP核接口处,包括SDRAM。
FPGA芯片使用的是Altera公司的EP3C10E144C8。
EP3C10E144C8
其中,虚线框表示在EP3C10E144C8芯片内部实现。
框外是具体的硬件实物。
2系统硬件介绍
2.1CycloneIIIEP3C10E144C8
CycloneIII系列是Altera公司65nm低成本FPGA。
CycloneIIIFPGA比竞争FPGA的功耗低75%,含有5K至120K逻辑单元(LE),288个数字信号处理(DSP)乘法器,存储器达到4Mbits。
CycloneIII系列比前一代产品每逻辑单元成本降低20%,使设计人员能够更多地在成本敏感的应用中使用FPGA。
利用TSMC的65nm低功耗(LP)工艺,CycloneIIIFPGA提供丰富的逻辑、存储器和DSP功能,功耗更低。
在可编程逻辑发展历史中,CycloneIIIFPGA比其他低成本FPGA系列能够支持实现更多的应用。
CycloneIII芯片系列资源分配如图1所示。
由图可见,EP3C10系列芯片内部包含10320个逻辑单无,46个管脚,423936位RAM,23个乘法器,2个PLL,10个全局时钟网络,182个用户IO口。
资源不是很多,但足够我们完成此次设计了。
2.2SDRAM-HY57V641620
在基于FPGA的系统中,因FPGA本身内部的RAM空间有限,常需要与外部较大容量的高速存储器配合使用。
而在各种随机存储器件中,SDRAM的价格低廉、密度高、数据读写速度快的优点,是比较理想的选择。
但由于SDRAM的控制逻辑比较复杂、时序要求高等特点,使用很不方便,这就要求设计一种简单易操作的软核,以方便开发者对SDRAM操作控制。
可幸的是,大部分Nios中的SDRAM接口兼容绝大部分SDRAM,使得SOC开发变得非常简单。
2.3数字温度传感器18B20
温度测量部分由DS18B20(图2)单线数字温度传感器完成。
DS18B20支持“一线总线”接口,测量温度范围为-55℃~+125℃,在-10℃~+85℃范围内,精度为±
0.5℃。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:
环境控制、设备或过程控制、测温类消费电子产品等。
18B20支持3V~5.5V的电压范围,使系统设计更灵活、方便。
2.3.1DS18B20的性能特点
①采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位)
②测温范围为-55℃-+125℃,测量分辨率为0.0625℃
③内含64位经过激光修正的只读存储器ROM
④适配各种系统
⑤用户可分别设定各路温度的上、下限
⑥内含寄生电源
2.3.2DS18B20内部结构
DS18B20内部结构主要由四部分组成:
64位光刻ROM,温度传感器,掉电后仍能保存的温度报警触发器TH和TL(存储在EEPROM),高速暂存器。
DS18B20的管脚排vccdqgnd。
64位光刻ROM是出厂前被光刻好的,它是该DS18B20的序列号。
每一个DSl820包括一个唯一的64位长的序号。
DS18B20数字温度计提供9位(二进制)温度读数,指示器件的温度。
信息经过单线接口送入DSl8B20或从DSl8B20送出。
因此从主机CPU到DSl8B20仅需一条线(和地线)。
DSl8B20的电源可以由数据线本身提供而不需要外部电源。
因为每一个DS18B20在出厂时已经给定了唯一的序号,因此任意多个DSl8B20可以存放在同一条单线总线上。
这允许在许多不同的地方放置温度敏感器件。
DSl8B20的测量范围从-55℃到+125℃,增量值为0.5℃,可在1s内(典型值)把温度变换成数字。
2.3.3DS18B20内部存贮器
每一个DS18B20包括一个唯一的64位长的序号,该序号值存放在DSl820内部的ROM中。
开始8位是产品类型编码(DSl8B20编码均为10H)。
接着的48位是每个器件唯一的序号。
最后8位是前面56位的CRC(循环冗余校验)码。
DSl820中还有用于贮存测得的温度值的两个8位存贮器RAM(表1),编号为0号和1号。
1号存贮器存放温度值的符号。
如果温度为负,则1号存贮器8位全为1,否则全为0。
0号存贮器用于存放温度值的补码,LSB(最低位)的“1”表示0.5℃。
将存贮器中的二进制数求补再转换成十进制数并除以2就得到被测温度值。
表118B20内部存贮器
0号
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
26
25
24
23
22
21
20
2-1
1号
S
18B20存贮器数据计算方法:
1、DS18B20用9位存贮温度值,最高位为符号位,如表1所示。
负温度时S=1,正温度时S=0。
如:
00AAH为+85℃,0032H为25℃,FF92H为-55℃
2、DS18B20用12位存贮温值度,最高位为符号位,下图为18b20的温度存储方式,负温度S=1,正温度S=0。
0550H为+85℃,0191H为25.0625℃,FC90H为-55℃
3AVALON系统总线
由于在所有与CPU相连的的片上功能模块中都需要使用到AVALON总线接口模块,因此在这里对它进行集中介绍,各个功能中的AVALON总线接口模块在结构上几乎都是相同的,仅存在地址线数量上的差别。
该模块的功能是通过产生相应的读写控制时序与NIOSII软处理器所使用的AVALON总线接口,使处理器能像访问特定的地址一样实现对功能模块的访问。
AVALON总线是一种专为NIOSIISOPC系统开发的总线标准,由于是针对SOPC设计的,因此结构简单,其运行时钟、各个接口位宽以及传输方式等都可以由用户自由配置。
AVALON总线家族中包含了两种适用于不同场合的接口标准,它们分别是适合点对点高速传输的AVALON-ST接口和适合多点互联的AVALON-MM接口。
由于在本设计中主要是实现各功能模块与CPU的连接,因此选用的是AVALON-MM接口。
AVALON-MM接口采用主从式的传输方式,即由主设备发起并控制传输过程,从设备响应信号完成整个传输。
在本系统中,由于所有片上功能模块的工作均需要处理器进行协调,因此主设备只需要NIOSIICPU一个,各个功能块均为从设备。
AVALON-MM接口能通过组合数量众多的功能引脚设计出各种适用于不同场合的连接结构,在这里采用了标准的从接口结构。
AVALON-MM标准的从接口具有读、写两种不同结构,其中“clk”、“byteenable_n”、“address”引脚复用;
“write”、“writedata”为写功能引脚;
“read”、“readdata”为读功能引脚,这两种功能引脚均可根据实际需要选用(如只能读的模块可不使用具备写功能的引脚)。
3.1使用标准读时序的AVALON-MM从接口
如图4所示,使用标准读时序的AVALON-MM从接口使用了“时钟(clk)”、“片选(chipselect)”、“字节使能(byteenable_n)”、“地址(address)”、“读控制(read)”、“读数据输出(readdata)”这几个引脚。
其中“字节使能(byteenable_n)”的功能是在接口总线不是32位时选择要传输的字节;
“地址(address)”的功能是当接口地址大于1时用于扩充地址线;
因此这两个引脚不是必须的,可根据实际情况删减。
AVALON-MM总线标准读操作时序(图5)分为A、B、C、D、E五个时间点,完成一次读操作至少需要两个时钟周期。
(A)从某个“时钟(clk)”的上升沿开始整个读传输周期;
(B)总线模块给出稳定的“地址(address)”、“字节使能(byteenable_n)”以及“读控制(read_n)”;
(C)总线模块给出经由地址解析得出的“片选(chipselect)信号”;
(D)从端口给出有效信号;
(E)总线模块读出数据,结束这一次的传输。
3.2使用标准写时序的AVALON-MM从接口
图3.3为使用标准写时序的从接口结构图。
与读接口类似,写接口也使用了“时钟(clk)”、“片选(chipselect)”、“字节使能(byteenable_n)”、“地址(address)”、“写控制(write)”、“写数据输入(writedata)”这几个引脚的,其中“地址(address)”、“字节使能(byteenable)”也是可以根据实际情况进行删减的。
AVALON-MM总线标准写操作时序(图6)分为A、B、C、D、E五个时间点,完成一次读操作至少需要两个时钟周期。
(A)写传输周期从某个“时钟(clk)”的上升沿开始;
(B)线模块给出稳定的“地址(address)”、“字节使能(byteenable_n)”以及“写控制(write_n)”;
(C)总线模块给出经由地址解析得出的“片选(chipselect)信号”;
(D)总线模块写入数据,结束这一次的传输。
4IP核设计
IP核(IntellectualPropertycore)是一段具有特定电路功能的硬件描述语言程序,该程序与集成电路工艺无关,可以移植到不同的半导体工艺中去生产集成电路芯片。
IP内核可以在不同的硬件描述级实现,由此产生了三类IP内核:
软核、固核和硬核。
这种分类主要依据产品交付的方式,而这三种IP内核实现方法也各具特色。
软核是用VHDL等硬件描述语言描述的功能块,但是并不涉及用什么具体电路元件实现这些功能。
软IP通常是以硬件描述语言HDL源文件的形势出现,应用开发过程与普通的HDL设计也十分相似,只是所需的开发硬软件环境比较昂贵。
软IP的设计周期短,设计投入少。
由于不涉及物理实现,为后续设计留有很大的发挥空间,增大了IP的灵活性和适应性。
其主要缺点是在一定程度上使后续工序无法适应整体设计,从而需要一定程度的软IP修正,在性能上也不可能获得全面的优化。
由于软核是以源代码的形式提供,尽管源代码可以采用加密方法,但其知识产权保护问题不容忽视。
硬核提供设计阶段最终阶段产品:
掩模。
以经过完全的布局布线的网表形式提供,这种硬核既具有可预见性,同时还可以针对特定工艺或购买商进行功耗和尺寸上的优化。
尽管硬核由于缺乏灵活性而可移植性差,但由于无须提供寄存器转移级(RTL)文件,因而更易于实现IP保护。
固核则是软核和硬核的折衷。
大多数应用于FPGA的IP内核均为软核,软核有助于用户调节参数并增强可复用性。
软核通常以加密形式提供,这样实际的RTL对用户是不可见的,但布局和布线灵活。
在这些加密的软核中,如果对内核进行了参数化,那么用户就可通过头文件或图形用户接口(GUI)方便地对参数进行操作。
对于那些对时序要求严格的内核(如PCI接口内核),可预布线特定信号或分配特定的布线资源,以满足时序要求。
这些内核可归类为固核,由于内核是预先设计的代码模块,因此这有可能影响包含该内核的整体设计。
由于内核的建立(setup)、保持时间和握手信号都可能是固定的,因此其它电路的设计时都必须考虑与该内核进行正确地接口。
如果内核具有固定布局或部分固定的布局,那么这还将影响其它电路的布局。
本系统用的是Verilog编写的软核。
4.1定制18B20IP核
18B20接口Verilog设计如图8所示。
在HDL中,状态机用得比较多。
18B20是基于单线协义器件,在编写HDL时必须严格按照手册上器件时序来写。
FPGA需要完成DS18B20的初始化、读取DS18B20的48位ID号、启动DS18B20温度转换、读取温度转化结果。
读取48位ID号和读取温度转换结果过程中,FPGA还要实现CRC校验码的计算,保证通信数据的可靠性[14]。
以上操作反复进行,可以用状态机来实现。
18B20的状态机和时序太过复杂,也由于没有18B20的HDL器件模型,仿真略去,直接硬件调试。
在添加IP核到SOPC中时,必须要选择好对应的Signals和Interface配置。
这样,IP核才能正常工作。
配置中要注意的选项已在图中标出。
如图9所示。
4.2数码管IP核设计
温度测量数据显示使用的是4位共阳数码管。
数码管扫描方式一般分为两种:
动态扫描和静态显示。
为了减少IO口的使用,常用动态扫描方式。
但是动态扫描方式会消耗过多的CPU资源,为了减少Nios处理器的负担,本系统采用Verilog编写IP核,直接驱动数码管,那样在需要显示数据时只要控制IP核相关寄存器就可以了。
大大节省了CPU资源。
数码管模块主要由分频、位选扫描模块和段选扫描模块组成。
4.2.1数码管分频模块设计
数码管动态扫描原理是利用了人的视觉暂留特性,为了实现它扫描频率最好在每秒25次以上。
本系统中要用到4个数码管,扫描频率应在每秒100次以上。
系统时钟使用的是50Mhz有源晶振,可以使用计数器来分频。
计数器分频的计算值为:
25000000/100=250000。
分频模块程序如下:
parameterSCAN_TIME=25000000/100;
integercount;
always@(posedgeclkornegedgereset_n)
begin
if(!
reset_n)
begin
count<
=0;
d_clk<
end
else
begin
if(count==SCAN_TIME)
begin
d_clk<
=~d_clk;
count<
end
else
=count+1;
end
end
为了仿真方便,可令SCAN_TIME=5,实现10分频,如下图所示:
4.2.2数码管位选模块设计
数码管位选模块的功能是将轮流选通四个数码管,使其亮。
选通频率由分频模块输出时钟d_clk控制。
模块的程序设计如下:
reg[3:
0]state;
parameter
IDLE=4'
b0000,
BIT_1=4'
b0001,
BIT_2=4'
b0010,
BIT_3=4'
b0100,
BIT_4=4'
B1000;
always@(posedged_clkornegedgereset_n)
state<
=4'
b0000;
bit_sel<
else
case(state)
IDLE:
beginbit_sel<
=IDLE;
state<
=BIT_1;
end
BIT_1:
beginbit_sel<
data_temp<
=data[4:
0];
=BIT_2;
BIT_2:
beginbit_sel<
data_temp<
=data[9:
5];
state<
=BIT_3;
BIT_3:
=data[14:
10];
=BIT_4;
BIT_4:
=data[19:
15];
default:
endcase
程序主要由一个状态机构成,在d_clk上升沿到来时,改变状态变量以选择输出不过的位选值到bit_sel寄存器中。
仿真图如下:
图11中,rst是复位信号,低电平有效。
可以看到,限着时间的推移,bit_sel寄存器的值在0001-0010-0100-1000循环变化,以实现数码管依次选管的功能。
4.2.3数码管段选模块设计
这个模块主要功能是实现数码管段选的功能,即是显示不同的数字。
原理很简单,就是根据不同的十进制数字输入对应输出不同的二进制BCD码,即译码。
译码模块主要是用一个状态机实现。
程序如下:
assignseg_sel=seg_reg^{data_temp[4],7'
b0000000};
always
begin
case(data_temp[3:
0])
4'
h0:
seg_reg<
=8'
hC0;
4'
h1:
hF9;
h2:
hA4;
h3:
hB0;
h4:
h99;
h5:
h92;
h6:
h82;
h7:
hF8;
h8:
h80;
h9:
h90;
hA:
h88;
hB:
h83;
hC:
hC6;
hD:
hA1;
hE:
h86;
hF:
h8E;
endcase
endmodule
这是一个组合逻辑电路,仿真图如下:
仔细观察,可见seg_sel寄存器输出是一个周期循环的序列。
依次为:
153-176-164-121。
对应数码管显示的就是不同的数字。
4.2.4数码管模块整合
将上述三个模块放在一起,就可以完成数码管模块设计。
4.2.5数码管AVALON接口设计
数码管IP核接口定义如图14所示:
数码管IP核中除了动态扫描外还带有译码功能。
在显示数据时,只要将数据送至readdata即可。
定制IP核时,相关管脚设置要求如下图:
4.3CPU和片上系统硬件定制
Nios系统由一般由JTAG、RAM(SRAM\SDRAM\OnChipRAM)、Flash(EpcsFlash)和其他用户自定义IP组成。
如所示图16:
CPU采用的是II/E简单型32位处理器,与其他两种标准和高级处理器相比,它占的逻辑单元最少,仅要600~700个。
但是它内部没有有指令缓存和硬件乘法器等。
不过对于这次设计来说,简单型已经够用了。
相关配置如下图所示:
图17CPU配
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA SOC 数字 温度计 论文