03h 1000h 寄存器值后面带个h地址

SJA1000在CAN总线系统节点的应用 - 通信网络 - 行业资讯==www.ic37.com
 | 
SJA1000在CAN总线系统节点的应用
时间:, 来源:互联网,
文章类别:
作者:北京理工大学
岑雪松 朱 丹
来源:《单片机与嵌入式系统应用》
介绍CAN总线控制器SJA1000;给出其在CAN总线系统节点中的应用方法、节点电路原理图及初始化程序;针对用户SJA1000容易出现的问题进行了解说。
SJA1000 节点 单片机
CAN总线是德国Bosch公司20世纪80年代初,为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发一种串行数据通信协议。1993年11月,ISO正式颁布了道路交通运载工具,进行数据信息交换用的高速通信控制局部网(CAN)的国际标准(ISO11898)。PHILIPS、Intel、MOTOROLA.html" target="_blank" title="MOTOROLA">MOTOROLA等公司出品了很多支持CAN协议的集成芯片,如82526、SJAX4/X16/X32和具有片内CAN的电磁兼容微控制器P8XCE598、16位微控制器87C196CA/CB等。下面介绍PHILIPS半导体公司推出的CAN总线控制器SJA1000,并给出其应用实例。
1 CAN总线控制器SJA1000芯片介绍
SJA1000是一种独立的CAN总线控制器。PHILIPS半导体公司将它作为PCA82C200
CAN控制器(Basic CAN)的替代产品。SJA1000增加了一种新的工作模式(Peli
CAN),这种模式支持具有很多新特性的CAN 2.0B协议。
1.1 SJA1000引脚介绍
图1是SJA1000引脚图。SJA1000具有28个引脚,下面对部分引脚进行介绍。
MODE:模式选择输入,1(高电平)=Intel模式;0(低电平)=Motorola模式。
TX0、TX1:从CAN输出驱动器0,1输出到物理总线上。
RX0、RX1:从物理CAN总线输入到SJA1000的输入比较器。
INT:中断输出,用于中断微控制器。INT在内部中断寄存器各位都置位时,低电平有效。INT是开漏输出。
CLKOUT:SJA1000产生的提供给微控制器的时钟输出信号,时钟信号来源于内部振荡器且通过编程驱动,时钟控制寄存器的时钟关闭位可禁止该引脚。
SJA1000的其他引脚分别为:AD0~AD7,数据/地址复用总线;ALE/AS,Intel模式/Motorola模式的地址锁存信号;(RD)/E、WR,读写控制信号;CS,片选信号输入,低电平有效;XTAL1,输入到振荡器放大电路,外部振荡信号由此输入;XTAL2,振荡器放大电路的输出,使用外部振荡信号时左开路输出;VDD1、VDD2、VDD3,5V电压端;VSS1、VSS2、VSS3,与上述电压端相对的接地端。SJA1000有两种封装形式,分别是塑质双列直插封装和塑质小型线外封装。
1.2 SJA1000芯片功能介绍
SJA1000与它的前一款-PCA82C200独立控制器是兼容的。SJA1000具有很多新的功能,修改了两种模式:Basic
CAN模式、PCA82C200兼容模式;增加了Peli CAN模式,此模式支持CAN
2.0B协议规定的所有功能(29字节的识别码)。
SJA1000的主要新功能:
*标准结构和扩展结构信息的接收和发送;
*具有64字节长度的接收队列;
*在标准和扩展格式中,都有单/双接收过滤器(含屏蔽和代码寄存器);
*读/写访问的错误计数器,可编程的错误限制报警,最近一次的误码寄存器;
*每一个CAN总线错误的错误中断;
*由功能位定义的仲裁丢失中断;
*一次性发送(当错误或仲裁丢失时不重发);
*只听模式(CAN总线监听,无应答,无错误标志);
*支持热插拔(无干扰软件驱动位速检测);
*硬件禁止CLKOUT输出。
下面只介绍Basic CAN模式,对于Peli
CAN模式请查看参考文献[1]。
SJA1000复位,默认为Basic CAN械,或者通过时钟分频寄存器的CAN模式位来选择模式。此位清零时,为Basic
CAN模式;置位时,为Peli CAN模式。在Basic CAN模式下,对SJA1000进行控制以及收发数据,都是通过对SJA1000内部寄存器的读/写访问来实现的。对于单片机而言,操作SJA1000就像访问外部RAM一样简单。有两种模式可以对SJA1000的内部寄存器访问,而在这两种模式下对其寄存器的访问是有区别的。这两种模式分别是复位模式和工作模式。当硬件复位,或控制器掉线,或置位复位请求位时,SJA1000进入复位模式;而当清除复位请求位时,SJA1000进入工作模式。SJA1000的寄存器分布于0~31连续的地址空间中。这32个字节可分为控制段(10字节)、发送缓冲器段(10字节)、接收缓冲器段(10字节)、时钟分频器和1个无效字节。在复位模式下可写的寄存器为控制段的控制寄存器、命令寄存器、接收代码寄存器、屏蔽寄存器、总线时序0、总线时序1、输出控制寄存器,还包括接收缓冲器和时钟分频器;而在工作模式下可写的寄存器为控制寄存器、命令寄存器、发送缓冲器段、接收缓冲器段和时钟分频器。
下面根据应用需要具体介绍SJA1000的控制寄存器、命令寄存器、状态寄存器、中断寄存器。
(1)控制寄存器(CR)
控制寄存器位于SJA1000寄存器区的0地址,用来设置CAN总线的模式和各种中断。其各位的意义如表1所列。
表1 控制寄存器各位说明(CR):CAN地址0
溢出中断使能
使能。如果置位数据溢出位,微控制器接收溢出中断信号
禁止。微控制器不从SJA1000接收溢出中断信号
错误中断使能
使能。若出错或总线状态改变,此中断信号有效
禁止。微控制器不从SJA1000接收错误中断信号
发送中断使能
使能。当信息被成功发送或发送缓冲器又被访问时,产生中断信号
禁止。微控制器不从SJA1000接收发送中断信号
接收中断使能
使能。信息被无错误接收时,产生此中断信号
禁止。此中断信号被禁止
当前。SJA1000检测到复位请求后,忽略当前发送/接收信息,进入复位模式
空缺。复位请求位接收到一个下降沿后,SJA1000回到工作模式
在硬启动或总线状态位设置为1(总线关闭)时,复位请求位被置为1.在外部复位期间,微控制器不能把复位请求位置为0。如果要把复位请求位置为0,微控制器必须先检查这一位,以确定外部复位引脚不为低电平。复位请求位被设为0后,SJA1000将会等待:
1.1个总线空闲信号(11个弱势位),如果前一次复位请求是硬件复位或CPU初始复位;2.等待128个总线空闲,如果前一次复位请求是CAN控制器在重新进入总线开启模式前初始化总线造成的。
(2)命令寄存器(CMR)
命令寄存器对微控制来说是只写存储器。在复位模式和工作模式下都可对此寄存器进行访问,但是读这个地址返回值是“”。表2是命令寄存器各位的说明。将睡眠模式位置为1,SJA1000进入睡眠模式,此时没有总线活动,没有中断等待。CMR.3位是用来清除由数据溢出状态位指出的数据溢出。如果数据溢出位被置位,就不会产生数据溢出中断了。在释放接收缓冲器命令的同时,可以发出清除数据溢出命令。读接收缓冲器之后,微控制器可以通过设置释放接收缓冲器为1,来释放接收队列当前信息的内存空间。
(3)状态寄存器(SR)
状态寄存器对微控制器来说是只读存储器,表3是状态寄存器各位的功能说明。当传输错误计数器超过限制(255)(总线状态位置1,即总线关闭),CAN控制器就会将复位请求位置1,在错误中断允许的情况下,会产生一个错误中断。这种状态会持续到CPU清除复位请求位。对于错误状态位,当至少有一个错误计数器满或超出CPU警告限制(96)时,错误状态位被置位。在中断使能的情况下,会产生错误中断。
表2 命令寄存器各位的功能说明(CMR):CAN地址1
睡眠。若没有CAN中断等待和总线活动,SJA1000进入睡眠模式
唤醒。清除数据溢出状态位
清除数据溢出
清除。清除数据溢出状态位
释放接收缓冲器
释放。接收缓冲器存放信息的内存空间将被释放
当前。若不是在处理过程中,等待处理的发送请求将取消
空缺。无动作
当有。信息被发送
空缺。无动作
状态寄存器各位的功能说明(SR):CAN地址2
总线关闭。SJA1000退出总线活动
总线开启。SJA1000加入总线活动
出错。至少出现一个错误计数器满或超过CPU报警限制
正常。两个错误计数器都在警限制以下
发送。SJA1000在传送信息
空闲。没有要发送的信息
接收。SJA1000正在接收信息
空闲。没有可接收的信息
发送完毕状态
完毕。最近一次发送请求被成功处理
未完毕。当前发送请求未处理完毕
发送缓冲器状态
释放。CPU可以向发送缓冲器写信息
锁定。CPU不能访问发送缓冲器,有信息正在等待发送或正在发送
数据溢出状态
溢出。信息丢失,因为RXFFIFO中没有足够的空间来存储
空缺。自从最后一次清除数据溢出命令执行,无数据溢出发生
接收缓冲器状态
满。RXFIFO中有可用信息
空。无可用信息
(4)中断寄存器(IR)
通过中断寄存器可识别中断源。当寄存器的1位或多位被置位时,INT(低电平有效)引脚被激活。寄存器被微控制器读过之后,所有会导致INT引脚上的电平变化的位被复位。中断寄存器对微控制而言是只读存储器。中断寄存器各位的功能说明如表4所列。
表4 中断寄存器各位的功能说明(IR):CAN地址3
置位。退出睡眠模式时此位被置位
复位。微控制器的任何读访问将清除此位
数据溢出中断
设置。当数据溢出中断使能位被置为1时,向数据溢出状态位传送“0-1”,此位被置位
复位。微控制器的任何读访问清除此位
置位。错误中断使能时,错误状态位或总线状态位的变化会置位此位
复位。微控制器的任何读访问清除此位
置位。发送缓冲器状态从0变为1(释放)和发送中断使能时,置位此位
复位。微控制器的任何读访问清除此位
置位。当接收FIFO不空和接收中断使能时置位此位
复位。微控制器的任何读访问清除此位
2 SJA1000在节点中的应用实例
该节点的微控制器选用了8位单片机AT89C51,SJA1000作为CAN总线控制器,并且使用了CAN接口芯片82C250。此节点可直接运用到CAN总线网络系统中,或者对此节点电路稍加变动来满足设计的要求。下面从硬件电路和软件设计两部分来介绍。
2.1 节点硬件电路设计
图2是节点的电路原理图。注意SJA1000复位端的连接,AT89C51是高电平复位,而SJA1000是低电平复位,因此复位信号要通过一个反相器与SJA1000的复位端相连。另外SJA1000的11脚MODE接高电平,选择Intel二分频模式。SJA1000的16脚是中断信号输出端,在中断允许情况下,有中断发生时,16脚出现由高电平到低电平的跳变,因此16脚可以直接与AT89C51的外部中断输入脚相连接。该设计中之所以选择82C250芯片,是因为其具有高速性(最高可达1
Mbps),具有抗瞬间干扰保护总线的能力,具有降低射频干扰的斜率控制。此外,它可以与110个节点相连,防止电池与地之间发生短路,当某一个节点掉电时,不会影响总线。在设计节点电路时,还要注意下面几点:
1.SJA1000通过光耦与82C250的连接是电流隔离的接法,这样可以防止线路间的串扰。在总线两端要接2个120Ω的总线阻抗匹配电阻。忽略掉它们会降低总线的抗干扰能力,甚至导致无法通信。
2.通过在地和82C250的8脚(RS)之间接不同阻值的电阻,可选择三种不同的工作方式:高速、斜率控制和待机,如表5所列。
表5 RS选择的三种工作方式
RB提供条件
R8上的电压或电流
VRS>0.75Vcc
10μA<-IRS<200μA
VRS<0.3VCC
IRS<|10μA|
0.4VCC<VRS<0.6VCC
-IRS<500μA
在高速工作方式下,发送器输出晶体管简单地以尽可能快的速度启闭。在这种方式下,不采取任何措施限制上升和下降斜率。建议使用屏蔽电缆以避免射频干扰问题。通过将引脚8接地,可选择高速方式。
对于较低速度或较短总线长度,可用非屏蔽双绞线或平行线作总线。为降低射频干扰,应限制上升和下降斜率。上升和下降斜率可通过由引脚8至地连接的电阻进行控制。斜率正比于引脚8上的电流输出。
若引脚8加有高电平,则电路进入低电流待机方式。在这种方式下,发送器被关掉,而接收器转至低电流。由于在待机方式下,接收器是慢速的,因此,第一个报文将被丢失。
3.SJA1000的TX1脚悬空,RX1引脚的电位必须维持在约0.5Vcc上,否则,将不能形式CAN协议所要求的电平逻辑。
2.2 节点软件设计
根据节点电路原理图,SJA1000的首地址为0000H。用MCS-51汇编语言编制的初始化程序如下:
CR EQU 0000H ;控制寄存器
CMR EQU 0001H ;命令寄存器
SR EQU 0001H ;命令寄存器
SR EQU 0002H ;状态寄存器
IR EQU 0003H ;中断寄存器
ACR EQU 0004H ;接收代码寄存器
AMR EQU 0005H ;接收屏蔽寄存器
BTR0 EQU 0006H ;总线时序寄存器0
BTR1 EQU 0007H ;总线时序寄存器1
OCR EQU 0008H ;输出控制寄存器
MOV DPTR,#CR
MOV A,#1BH ;开放接收、出错、溢出中断
MOVX @DPTR,A
;置位复位请求,开始初始化
MOV DPTR,#ACR
MOV A,#03H ;接收代码寄存器为03H
MOVX #DPTR,A
MOV A,#0FCH ;接收屏蔽寄存器为0FCH
MOVX @DPTR,A
MOV A,#00H
MOVX @DPTR,A
MOV A,#1CH ;500Kbps
MOVX @DPTR,A
MOV A,#0AAH ;正常输出模式
MOVX @DPTR,A
MOV DPTR,#CR
MOV A,#1AH ;初始化结束,SJA1000进入工作状态
MOVX @DPTR,A
注意:SJA1000初始化程序中,只有当控制寄存器CR中的复位请求为1时(SJA1000工作在复位模式),允许访问上述寄存器,否则既写不进去,也读不出正确的内容。在接收寄存器(RXB)为空,满足不述条件时,报文可被正确地接收。
报文接收条件:接收代码位(AC.7~AC.0)和信息识别码的高8位(ID.10~ID.3)相等,且与接收屏蔽位(AM7~AM.0)的相应位相或为1,则报文被接收。例如:在初始化程序中,ACR=03H,AMR=0FCH,由此只有信息识别码的高8位为XXXXXX11的数据帧被接收。BTR0的值可决定波特率预分频器(BRP)和同步跳转宽度(SJW)的数值;BTR1可决定位周期的宽度,采样点的位置及在每个采样点进行采样的次数。程序中BTR0=00H,BTR1=1Ch,则波特率为500Kbps。有一点必须要注意,系统中所有节点的BTR0和BTR1的内容都应用相同,否则将无法进行通信。对CR的第二次写访问是清除复位请求位,使SJA1000返回工作模式。
技术文章分类
相关技术文章基于FPGA的多路模拟量、数字量采集与处理系统
摘要:提出一种基于FPGA技术的多路模拟量、数字量采集与处理系统的设计方案,分析整个系统的结构,并讨论FPGA内部硬件资源的划分和软件的设计方案等。本设计方案外部电路结构简单可靠,特别适用于多路检测系统中,而且可以根据需要容易地对系统进行扩展,对于检测系统来讲具有一定的通用性。
关键词:FPGA A/D采集 数字量采集 VHDL语言设计
在电气测控系统中,常常需要采集各种模拟量信号、数字量信号,并对它们进行相应的处理。一般情况下,测控系统中用普通MCU(如51、196等单片机或控制型DSP)是可以完成系统任务的。但当系统中要采集的信号量特别多时(特别是各种信号量、状态量),仅仅靠用普通MCU的资源就往往难以完成任务。此时,一般只能采取多MCU联机处理模式,或者靠其它芯片扩展系统资源来完成系统的监测任务。这样做不仅增加了大量的外部电路和系统成本,而且大大增加了系统的复杂性,因而系统的可靠性就会受一定的影响,这显然不是设计者所愿意看到的。本文所提出的一种基于FPGA技术的模拟量、数字量采集与处理系统,利用FPGA的I/O端口多,且可以自由编程支配、定义其功能的特点,配以VHDL编写的FPGA内部执行软件,能很好地解决采集的信号路数多的问题。因为用VHDL编写的执行软件内部对各组数字量是按并行处理的,而且FPGA硬件的速度是ns级的,这是当前任何MCU都难以达到的速度,因此本系统比其它系统更能实时地、快速地监测信号量的变化。所以在状态量特别多的监测系统中,本系统将更能发挥出自身的优势。
本系统中的外围电路设计相对简单、可靠,且鉴于FPGA和VHDL语言自身的特点,系统具有较好的扩展性,在监测和控制系统中也具有一定的通用性。系统主要包括:FPGA芯片区、多路选择与A/D采样电路、交流信号调理电路、光耦隔离驱动电路、时钟电源区、PROM代码下载电路等几部分。结构示意如图1所示。
图1 基于FPGA技术的多路模拟量、数字量采集与处理系统框图
1 FPGA芯片特点分析及资源分配
本系统中的FPGA是采用Xilinx公司的Spantan-II系理XC2S100-5 PQ208。该系列的内核采用2.5V供电,工作频率最高可达200 MHz;I/O端口供电电压为3.3V,可以承受5V的输入高电平。
Spartan-II系列具有丰富的I/O口资源,I/O口输出缓冲器呆以接收高达24mA的拉电流和48mA的灌电流。缺省时,I/O输出口的驱动能力的12mA,也可以设置成2、4、6、8、16或24mA。
FPGA内部资源划分为四大部分,如图2所示。
①FPGA逻辑运算中心。用来接收其它各部分的数据,并按照程序中设定的方案对所收到的数据进行相应的分析和处理。包括:对从MCU接收来的数据指令进行分析,并按其指令要求进行相应操作;接收A/D采样来的数据,对数据进行各种处理,如求其有效值,进行FFT分析等;接收来自数字量的各种信息数据,按设定的模式对其进行判断处理,并负责按接收的CPU指令输出相应的数字量。
②A/D控制单元。主要负责控制外部A/D芯片和多路开关的选通时序,以及实现对A/D采要过程的合理控制。因为,在FPGA芯片内部,不像在MCU内部那样有丰富的外设控制资源供用户使用,要用FPGA来控制A/D采样过程的动作,必须用软件来模拟实现各种A/D控制资源。利用这些自设定的A/D控制管理资源,配以合理的软件控制时序,才能保证采样过程的顺利进行。
③数字量监测控制单元。负责所有要监视和控制的数字量的状态数据的采集和控制命令的输出。这一部分同样也需要用软件来模拟实现各种对数字量的管理控制,只有配备较完备的外设控制管理单元,整个数字量的管理控制才能正确合理地进行。
④FPGA接口逻辑控制单元。在FPGA内部设计了FPGA模块与外界MCU的接口单元,这虽然占去了一定的内部资源,但是考虑到在一般的工程系统中不仅仅包括对各种信息的采集控制,还往往包括通信、显示以及进行一些复杂算术运行等等。FPGA虽然有其显著的长处,但是在这些方面实现起来就往往不如普通MCU来得容易,因此考虑到本系统的通用性,在设计上增加了FPGA模块与外界MCU的接口单元。
图2 FPGA内部资源分配示意图
2 交流模拟量采集的控制与管理
在交流模拟量采集外围电路中,A/D芯片采用的是BB公司的ADS774。多路交流量是通过4051的多路开关后输入到ADS774芯片的。交流信号在进入ADS774之前要经过信号调量电路,调理成ADS774认可的模拟信号。
FPGA实现的交流量采样处理控制软件由五部分组成:
第一部分为设定的3个与A/D采样有关的16位指令寄存器组:A/D参数寄存器(ADPR)、输出控制寄存器(ADOR)、A/D控制寄存器(ADCR)。
ADPR(XXXXXXXXX XXXXX XX)的各位定义如下:位1、位0选择每周波采样的点数(00表示每周波采16个点,01表示每周波采32个点,10表示每周波采64个点,11表示每周波采128个点)。位6~位2用来表示FPGA的时钟频率,00001表示时钟频率为1MHz,11111表示时钟频率为31MHz,00000表示时钟频率为32MHz。位15~位7表示所采样信号的频率,这9位表示的范围为1Hz~512Hz。
ADOR是与FPGA输出有关的寄存器。该寄存器的作用是:当MCU要读取某通道信号的信息时,FPGA应该输出该信号的哪次谐波电压。如为FFFFH,表示DSP读到的是该通道信号的有效值;如果ADOR的值为0010H,那么,DSP读到的是该通道信号的2次谐波电压。
ADCR寄存器控制A/D采样的通道数的选择以及与A/D采样有关的寄存器的复位控制等,这也是考虑到系统的通用性而设计的:如000C表示采样第11路交流模拟量电压;0011则表示同时采样前六路信号等等。
第二部分为设计产生A/D与CD4051芯片的控制信号。如在图2中,在采样12路交流模拟量的情况下,FPGA需要产生7路控制信号,这7路控制信号应该满足一定的时序要求。图3给出了同时采样前六路信号时FPGA的控制信号时序。
Abcs2[0,1,2]总线信号实际上是多路开关通道选择的3个控制信号selA、selB、selC。需要说明的是,因为要进行修正,在对6路交流信号采样的同时,也对4051的+5V和AGND进行了采样,所以实际上测量的通道数为8路。
从图3可看出,abcs2[0,1,2]总线信号每19.531 25μs加1,每156.25μs重新循环一次,满足8路交流同步采样的要求。
从25μs时刻的局部放大图可以看出,当(23.6μs时刻)4051选择通道1时,ADS774的CS和R/C信号同时为低,延时0.5μs左右CE端出现上升沿(24.1μs),启动A/D转换,这符合ADS774的A/D转换时序。需要指出,如果CE端直接接高电平,那么,R/C的下降沿将直接启动A/D转换。之所以用两个信号来启动A/D转换,是为了减少A/D的误触发。考虑到4051的导通延时,所以在通道切换0,5μs后才启动A/D转换。图3中没有画出4051的INH信号,在采样前6路交流信号时,该信号一直为低。如果同时采样12路信号,那么,abcs2[0,1,2]总线信号每9.765 625μs加1,每78.125μs重新循环1次;INH信号每78.125μs电平变化1次,用来选择哪个4051导通。
第三部分为A/D输入数据缓冲区和数字滤波模块。A/D转换完成后,ADS774的引脚STS给FPGA输出转换完成信号(低电平)。FPGA接收这一信号后,将产生读ADS774的时序,把12位的A/D转换数据读入到数据缓冲区的二维数组datain(abcv)(sampn)中。Abcv为通道号,sampn表示周波信号中所采样的第几个点。将一个周期的12路信号采样完后,置标志ADFLAG为1,进行数据的滤波处理。首先,对datain(abcv)(sampn)的值进行修正;给定sampn,对前6路信号来说,datain(7)(sampn)存储的是AGND的A/D转换值,将datain(i)(sampn)减去datain(7)(sampn)的值存储在datamid(i)(sampn)中(i=1,…,6)。与此类似,后六路的采样值datain(i)(sampn)减去datain(15)(sampn)的值存储在datamid(i)(sampn)(i=8,…,14)。然后,给定abcv,对datamid(abcv)(j)(j=0,…,15)这16个点的数据进行FIR滤波,将FIR滤波后的数据存储在datamd(abcv)(sampn)数组中。
第四部分是均方根有效值计量和FFT谐波分析模块。输入的数据经过处理后,首先进行均方根有效值的计算。给定abcv,先求出datamd(abcv)(j)(j=0,…,15)这16个点的平方和,将其存储到datarsult(abcv)中。为了防止溢出,dataresult(abcv)定义28位的位矢量。然后把dataresult(abcv)中的数据进行平方的运算,结果存储在douts(i)中。开平方是利用函数sqt(a:std_logic_b:integer)return std_logic_vector来实现的。a为要开方的全矢量数据;整数b用来定义输出位矢量的长度。该函数被封装成一个包(package),符合自顶向下(TopDown)的HDL语言设计思想。douts(i)是信号量,由赋值语句douts(i)&=sqt(dataresult (i);16)(i=0,…,15)可以分别求出12路信号的有效值。电压有效值和谐波分析完成以后,清ADFLAG为0。
第五部分为输出缓冲器单元。当DSP对FPGA产生读时序(FPGACS为低电平且RD下降沿来到时),FPGA根据DSP的低五位地址线A0~A4的值(对应于FPGA的chansel:std_logic_vector(4 downto 0)信号量),以及ADOR寄存器中的值,将相应的数据送到数据总线上。比如,若chansel为(00010)2,ADOR中的值为FFFFH,那么,FPGA就会将通道2的有效值douts(2送到数据总线上。
图3 FPGA的A/D控制信号时序图
3 对数字量的控制与管理
在图2系统中,假定要对16个负载进行管理,每个负载包括1个控制输出量和2个状态返回量,因此共有16路的数字量输出,32路的数字量输入。
FPGA对数字量的管理软件结构:
FPGA对数字量的控制管理也设置了三个16位的指令寄存器组。这三个指令寄存器的内部地址为03H、04H和05H.03H为开关量输出允许寄存器(KGER);04H为跳闸闭合寄存器(KGCR);05H为开关量开闭寄存器(KGIR)。
来自负载的总共32个状态反馈信号(DIN00、DIN01……DIN31)分成16组,分别接到FPGA的16个信号量dini上(i=1,2,…,15)。dini是长度为2的位矢量std_logic_vector(1 downto 0),分别对应于1个负载的两个状态反馈位。FPGA用16个进程process(din1)、process(din1)……process(din15)来对输入数字量敏感。当dini的载位电平发生变化时,进程启动,FPGA结合MCU发送的控制指令,判断负载的状态,并记录在输出数据缓冲区中。输出数据缓冲区包括16个数据存储器,这16个数据存储器在FPGA内部的地址从(10000)2到(11111)2。(单元存储的是第1个负载的状态,以此类推,(10000)2单元存储的是第16个负载的状态。每个16位数据存储器的8位固定为5AH,接下来的5位为(00000)2,只有最后3位才是负载的状态位。
当MCU读FPGA时,process(rd)进程启动。这时,如果MCU地址线A4的电平(对应于FPGA的chansel:std_logic_vector(4 downto 0)信号量的第四位)为“1”,FPGA就根据chanse1(3 downto 0)的值,将对应的数据存储器的值发送到数据总线上。MCU读回数据存储器的值后,如果前13位不是(0)2,说明产生了读错误,MCU重新再读一次。必须指出,在FPGA控制A/D采样时,读哪个通道信息也是通过A0~A3地址线区分的,但是,A4的电平为低。
MCU根据系统处于不同的状态给负载发送接通/断开指令,这是通过写FPGA的寄存器KGIR实现的。KGIR的16位依次代表16个负载,“1”为接通,“0”为断开,复位值是0000H.寄存器KGER是数字量输出的总开关,复位后为0000H,不允许数字量输出;MCU对其写入FFFFH后,允许数字量输出。FPGA给负载发去接通/断开指令后,负载将会有两个状态信号返回。FPGA结合寄存器KGIR的控制指令值,可以判定负载处于何种状态之一。如果反馈的信息为跳闸,FPGA将根据寄存器KGCR的值作出相应的处理。如果为其它信息,FPGA将不做处理,只是将状态信息存储在数据缓冲区中等待发送给权限高的MCU来决定。KGCR的复全值是0001H,表示跳闸发生后,FPGA将自动再发一次接通指令。程序运行的过程中,MCU根据任务的紧急和系统的布局,可以修改KGCR的值。如果KGCR的值为0003H,表示第一次跳闸发生后,FPGA可以重复发三次接通指令。
因为FPGA是基于RAM工艺的,在掉电后本身不能保存信息,因此需要一个外置存储芯片来保存其信息,这里采用一次可编程的PROM:XC17S100APD8I(OTP)。该PROM与Spartan-II芯片的接口只需要一个I/O;复位引脚的极性可编程(高有效或低有效);供电电压为3.3V。
XC17S100A的DONE、INIT、CCLK信号来自FPGA芯片XC2S100。系统刚一上电,FPGA首先初始化,置INIT、DONE为低。INIT为低后复位PROM,此时由于PROM的CE为低,因此PROM被选中,从而将数据流从DATA脚输入到FPGA的DIN脚。配置完成后,FPGA将DONE接高,PROM处于低功耗的待机模式,并将DATA脚置为高阻态。
在硬件调试和在线修改过程中,选用FPGA的CCLK、DONE、DIN、PROG引脚用做硬件调试编程。将下载电缆接在计算机并口上,选择恰当的下载方式就会将Xilinx开发软件生成的位流文件下载到FPGA的内部配置存储器中。配置下载流程可以分为3个阶段:初始化、清除配置内存、下载数据。清除内存在所有配置模式中都是一样的,下载数据却随着配置方式的不同而不同。
实际应用中,一般都需要将数据流文件烧入到Xilinx PROM中,每次上电伊始,由PROM将数据流下载到FPGA中,下载完毕,FPGA开始工作。
针对监测系统监测信号一般较多的特点,本文提出了一种基于FPGA技术的多路模拟量、数字量采集与处理系统,设计了相应的外围硬件电路和系统处理软件。在仿真和综合调试成功的基础上,本系统成功用于某航空重点预研项目的电气负载管理系统试验中。试验结果表明,本系统成功地完成了对多路模拟量、数字量的采集处理任务,因此,在电气测控系统中有较好的应用前景。
关注电子发烧友微信
有趣有料的资讯及技术干货
下载发烧友APP
打造属于您的人脉电子圈
关注发烧友课堂
锁定最新课程活动及技术直播
英特尔通过聘请业内最知名的AMD前GPU架构师Raja Koduri负责研发其独立GPU产品。
Intel公司的Cyclone 10 LP FPGA系列是低成本和低静态功耗的器件,提供高密度可编门...
 致力于在功耗、安全、可靠性和性能方面提供差异化的领先半导体技术方案供应商美高森美公司(Micros...
ZCU104 评估套件可帮助设计人员为监控、高级驾驶员辅助系统 (ADAS)、机器视觉、增强实境 (...
CPU和GPU都属于冯·诺依曼结构,指令译码执行,共享内存。FPGA之所以比CPU、GPU更快,本质...
2018 年 3 月 16 日,赛灵思又面向中国市场专门举行了一场信任 CEO 见面会,会上,已经在...
系统设计有时十分复杂,需要充分了解许多不同的元件,如果解决方案的各环节可以进行原型制作并快速演示,就...
本文将介绍一种基于现场可编程门阵列 (FPGA) 核心的实施体现了先进的现代航空电子设计方法。这项技...
FPGA 对绝大多数的人来说相对有些陌生。经常有朋友问我,你们成天搞的这个 FPGA 到底是什么东西...
今日发布“2011中国电子工程师生活与工作状况调查”结果。本次调查从日开始,至5月...
在简单电路中,当频率较低时,数字信号的边沿时间可以忽略时,无需考虑时序约束。但在复杂电路中,为了减少...
Critical Link选择其MityDSP-L138F嵌入式系统模块作为SDR的基础,因为该模块...
时钟是数字电路中所有信号的参考,特别是在FPGA中,时钟是时序电路的动力,是血液,是核心。
FPGA相比于CPU,最大的优点在于速度,简单来讲,FPGA是靠控制每个时钟(Cycle)来驱动信号...
FPGA中RAM的使用探索。以4bitX4为例,数据位宽为4,深度为4。
在这个以数据为中心的世界,用户对搜索引擎提出了比以往更高的要求。先进的英特尔技术可帮助 必应 利用强...
高云半导体 科技股份有限公司今日宣布签约ELDIS科技有限公司为以色列授权代理商。此举标志着高云半...
嵌入式技术的发展对MAC协议的实现也提供了很好的技术支撑。本文搭建了一种基于 ARM 和 FPGA ...
美国为何在许多自己的强项上制裁中国,中国又为何不对进口额超过石油的集成电路产品征收高关税呢?
ACAP 的核心是新一代的 FPGA 架构,结合了分布式存储器与硬件可编程的 DSP 模块、一个多核...
随着人工智能、5G通信、大数据、云计算等应用的出现,人们对于通信带宽的要求也在不断的提高,这些应用需...
 Lattice的ECP3/ECP5系列FPGA内部集成了多个sysDSP架构的乘法器模块,基于sy...
之前用serdes一直都是跑的比较低速的应用,3.125Gbps,按照官方文档一步一步来都没出过什么...
赛灵思公司第四任CEO Victor Peng 走马上任,他同时兼任公司总裁,Victor Peng...
像素是由比特组成的数字。例如,在256级灰度图像中,每个像素的灰度是由8比特(也就是1个字节)组成。...
我们使用3x3模板进行边界提取,所以当3x3九个点都是‘1’的时候,输出为‘1’,当九个点都是‘0’...
我不得不承认,随着时间的推移为 FPGA 供电变得越来越复杂,本文提供一些建议,希望可以帮助简化 F...
值得注意的是,以上测试是在资源足够频率不高的条件下测试的。根据经验,当资源使用较多,时钟频频较高时,...
相比分立IC,逻辑和线性模块能够提供不折不扣的高性能,同样地,ARM Cortex-M3处理器也是一...
找到问题根源后,根据测量结果修改 DSP 对 FLASH 空间的异步时序配置,以保证足够的裕量,问题...
随着人工智能和深度学习对运算要求越来越高,人们逐渐认识到并行处理、低延时、低功耗和可重配置的重要性,...
检测线圈和检测线路组成一个振荡器,当硬币通过币道时,线圈的电感会发生变化,引起检测电路振荡频率发生变...
Victor Peng于2008年加入赛灵思,曾任赛灵思产品执行副总裁兼总经理,主要负责公司各种系列...
本实验工程将介绍如何利在赛灵思异构多处理器产品系列 Zynq UtralScale+ MPSoC
这一次给大家分享的内容主要涉及Xilinx FPGA内的CLBs,SelectIO和Clocking...
多数FPGA开发者都习惯图形化界面(GUI)。GUI方式简单易学,为小项目提供了一键式流程。然而,随...
在二值图像的腐蚀算法过程中我们使用二值图像3x3图像矩阵,由图2可知,当九个格子中不全为‘0’或者‘...
信号处理系统一般不单单是模拟信号或者数字信号,一般两者都会有。信号的处理关注的是信号以及信号所包含的...
比特币挖矿机,就是用于赚取比特币的电脑,这类电脑一般有专业的挖矿芯片,多采用烧显卡的方式工作,耗电量...
总之,硬件的内容很多很杂,硬件那方面练成了都会成为一个高手,我时常会给人家做下方案评估,很多高级硬件...
Intel公司的MAX 10 FPGA系列采用TSMC 55nm NOR闪存技术,容量从2K到50K...
如果符合一些简单的设计原则,采用最新的Xilinx7系列FPGA架构上实现无线通信。Xilinx公司...
加利福尼亚州圣何塞 —自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASD...
自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX))总裁...
自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX))总裁...
如图7.20所示,在弹出的Hardware Setup页面里,选择当前硬件为USB Blaster,...
在学习一门技术之前我们往往从它的编程语言入手,比如学习单片机时,我们往往从汇编或者C语言入门。所以不...
典型高速系统应用框图举例
关于为FPGA应用设计优秀的电源管理解决方案已经有许多技术讨论,因为这不是一项简单的任务。 此任务的...
在高产量生产线的末端生产测试中,测试时间分秒必争。当生产线的测试速率与生产速率相匹配时,生产效率达到...
随着实施基于云的服务和机器到机器通信所产生的数据呈指数级增长,数据中心面临重重挑战。这种增长毫无减缓...
石油作为一种战略资源,越来越受到世界各国的重视;但石油又是一种不可再生的能源,随着世界经济的不断发展...
从市场规模来看,全球FPGA近几年基本维持在50亿美元左右。当前,在国家大力支持集成电路产业发展的环...
基于FPGA的二值图像的膨胀算法的实现 Xilinx 突破性技术与产品亮相 OFC 2018,大展光...
目前大多数的机器学习是在处理器上完成的,大多数机器学习软件会针对GPU进行更多的优化,甚至有人认为学...
本系统是针对现有市场上销售的车辆多注重于事故发生时对人身安全的保障(如安全气囊等),忽略了防范事故于...
CAN总线规范采用了ISO-OSI(Open System Interconnection Refe...
相信每一个电子工程师在项目开发的过程中都不可避免的要进行方案的调试,除了模拟调试我们还必须进行真机调...
在Pin Planner界面最下面出现的“Node Name”一列中,有我们的3个信号接口,这里“L...
3D图像传感器系统结构包含两只CMOS型图像传感器及缓存图像数据的SDRAM,为了对两只图像传感器...
JTAG模式在线下载FPGA的原理如图7.15所示,PC端的Quartus II软件通过下载线缆将b...
莱迪思半导体公司布推出全新的FPGA设计软件——Lattice Radiant(TM),适用于需要开发低功...
在进行FPGA学习的时候,我遇到过问题停滞不前,试验没有进展,心情沮丧的时候。那时对底层硬件一无所知...
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在P...
工业电子产品的发展趋势是更小的电路板尺寸、更时尚的外形和更具成本效益。由于这些趋势,电子系统设计人员...
抱着热情,自己后来一点一点地深入的学习fpga,一些常规逻辑电路的设计,包括逻辑门电路、数据选择器、...
各种方案虽然只是初步的了解一些,但是发现这方面虽然有类似SOPC概念的海思和TI双核解决方案,而且是...
主动噪声控制平台的FPGA实现。基于FPGA搭建了针对汽车的主动噪声控制平台,此平台可以正确实时地采...
如果你认为这么多书,怎么看都看不完。那是以一种静止、偏面的观点来分析问题了。其实上介绍那么多课,很多...
惯性导航系统(INS,Inertial Navigation System)也称作惯性参考系统,是一...
本文主要介绍了基于FPGA的压控晶振同步频率控制系统的研究与设计。利用GPS提供的1pps秒脉冲信号...
由于超级电容器单体性能参数的离散性,当多个单体串联组成电容器组时,在充放电过程中容易造成过充或过放现...
英特尔宣布开始发售英特尔(R) Stratix(R) 10 TX FPGA ,这也是业内唯一一款采用 58G...
本实验工程将介绍如何利在赛灵思异构多处理器产品系列 Zynq UtralScale+ MPSoC
FIR数字滤波器在数字信号处理的过程中有很好的线性相位和稳定性,被广泛应用于音频处理、语音处理、信息...
我们最近与Bunny Huang进行了有趣的交流,他是硬件大师以及Chumby,NetTV和Nove...
虽然推动业界向小型基站转变的因素众多,但可能最重要的是,消费者想要随时随地都能快速有效地连接到服务提...
随着FPGA技术的发展,数字通信技术与FPGA的结合体现了现代数字通信系统发展的一个趋势。为了使高速...
高端设计工具为少有甚是没有硬件设计技术的工程师和科学家提供现场可编程门阵列(FPGA)。无论你使用图...
FPGA及其外围电路是整个测量系统的核心。外围电路包括以下几个部分:1)电源转换电路,将5V电源转换...
不论从哪个角度看,今天的现场可编程门阵列(FPGA),都显得鹤立鸡群,真是非常棒的器件。如果在这个智...
在FPGA中,动态相位调整(DPA)主要是实现LVDS接口接收时对时钟和数据通道的相位补偿,以达到正...
本模块采用xilinx公司的 Spartan 3E 系列XC3S500E型FPGA作为核心控制芯片,...
随着检测节点的增多,视觉测量系统需要处理的数据量也不断增大,对视觉测量系统的测量速度提出了更高的要求...
设计了一种基于FPGA的实时视频图像采集处理电路系统。采用FPGA作为整个系统的控制和图像数据处理中...
eFPGA IP和FPGA SoC,谁将在未来更受欢迎呢?笔者认为,这两种生态都表明了SoC在摩尔定...
随着传感器、低成本摄像头和显示屏在当今嵌入式设计中的使用量飞速增长,市场上出现了许多激动人心的全新智...
目前,随着工艺和技术的进步,集成电路技术的发展已经使得在一个芯片上集成一个可编程系统(Program...
VGA(Video GraphICs Array)即视频图形阵列,是IBM在1987年随PS/2机(...
EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进...
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-

我要回帖

更多关于 寄存器值后面带个h 的文章

 

随机推荐