电子线路与仿真技术课程设计说明书剖析.docx
- 文档编号:9396653
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:25
- 大小:756.33KB
电子线路与仿真技术课程设计说明书剖析.docx
《电子线路与仿真技术课程设计说明书剖析.docx》由会员分享,可在线阅读,更多相关《电子线路与仿真技术课程设计说明书剖析.docx(25页珍藏版)》请在冰豆网上搜索。
电子线路与仿真技术课程设计说明书剖析
电子线路与仿真技术课程设计说明书
题目:
用SPI接口控制多个开关量及8位模拟量输出
系部:
专业:
班级:
学生姓名:
学号:
指导教师:
2016年5月25日
录目
1设计任务与要求1
1.1设计任务1
1.2设计要求1
2SPI知识简介2
2.2SPI的基本原理2
2.3SPI的应用特点6
3设计方案7
4SPI主机接口设计8
4.1SPI总线标准8
4.2SPI主机功能描述10
4.3单片机扩展SPI总线的系统框图10
4.4单片机SPI总线的时序模拟11
5从机的接口设计12
5.1从机设计原理12
5.274HC595资料12
5.374HC595的连接原理图16
5.4从机原理图绘制17
6设计心得19
参考文献20
1设计任务与要求
1.1设计任务
利用SPI接口控制多个开关量输出及多个8位模拟量输出。
可以综合到各种FPGA的SPI主机的设计过程,并给出所有相关的VerilogHDL程序。
SPI是一种全双工,同步的串行数据通信标准,主要用于微处理器、微控制器、外设之间的通信。
采用SPI接口可以实现处理器和外设之间以及处理器内部的通信。
SPI系统设计灵活,可以直接实现主机与许多的具有SPI接口的外设之间的通信。
SPI主机可以为没有标准SPI接口的微处理器或者微控制器提供标准的SPI接口。
本次设计主要是实现主机与许多的具有SPI接口的外设之间的通信出SPI主机在系统中的连接框图。
注意:
SPI主机设计提供标准的8051微处理器的总线读写周期,简单修改设计代码实现,可以是SPI主机支持其它微处理器接口。
1.2设计要求
(1)画出原理图,从板电路用74系列逻辑器件实现。
(2)仿真,记录仿真结果。
(3)分析结果,进行了哪些改进。
(4)结论,模拟量输出幅度实际是多少,是否是线性。
2SPI知识简介
2.1SPI的背景知识
SPI是英文SerialPeripheralInterface的缩写,中文意思是串行外围设备接口。
SPI是Motorola公司推出的一种同步串行通讯方式,是一种标准的四线同步双向串行总线,因其硬件功能很强,与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。
SPI可以使微控制器(MCU)与各种外围设备(包括FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和微控制器等)以串行方式进行通信以交换信息。
SPI总线使用同步协议传送数据,接收或发送数据时由主机产生的时钟信号控制。
SPI接口可以连接多个SPI芯片或装置,主机通过选择它们的片选来分时访问不同的芯片。
2.2SPI的基本原理
2.2.1SPI的接口
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,设备之间有4线模式(双向传输时)或3线模式(单向传输时)。
在4线模式下,它们是SDI(数据输入),SDO(数据输出),SCLK(时钟),CS(片选);在3线模式下,SDI和SDO并为一根,定义为SIO。
(1)MOSI–SPI总线主机输出/从机输入(SPIBusMasterOutput/SlaveInput)
(2)MISO–SPI总线主机输入/从机输出(SPIBusMasterInput/SlaveOutput)
(3)SCLK–时钟信号,由主设备产生
(4)CS–从设备使能信号,由主设备控制
如图1所示为SPI总线接口信号线基本连接关系:
图1SPI总线接口信号基本连接关系
其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。
这就允许在同一总线上连接多个SPI设备成为可能。
接下来就负责通讯的3根线了。
通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。
这就是SCLK时钟线存在的原因,由SCK提供时钟脉冲,SDI、SDO则基于此脉冲完成数据传输。
数据输出通过SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。
完成一位数据传输,输入也使用同样原理。
这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。
SPI总线系统有以下几种形式:
1个主机和多个从机、多个从机相互连接构成多主机系统(分布式系统)、1个主机与1个或几个I/O设备构成的系统等。
2.2.2SPI的数据传输
SPI主设各负责产生系统时钟,并决定整个SPI网络的通信速率。
所有的SPI设各都采用相同的接口方式,可以通过调整处理器内部寄存器改变时钟的极性和相位。
由于SPI器件并不一定遵循同一标准,比如EEPROM、DAC、ADC、实时时钟及温
度传感器等器件的SPI接口的时序都有所不同,为了能够满足不同的接口需要,采用时钟的极性和相位可配就能够调整SPI的通信时序。
SPI设各传输数据过程中总是先发送或接收高字节数据,每个时钟周期接收器或收发器左移1位数据。
对于小于16位的数据在发送之前必须左对齐,如果接收的数据16位则采用小于软件将无效的数据位屏蔽,如图2所示:
图2两个移位寄存器形成一个内部芯片环形缓冲器
在一个SPI时钟周期内,会完成如下操作:
(1)主机通过MOSI线发送1位数据,从机通过该线读取这1位数据;
(2)从机通过MISO线发送1位数据,主机通过该线读取这1位数据;
这是通过移位寄存器来实现的。
如上图3所示,主机和从机各有一个移位寄存器,且二者连接成环。
随着时钟脉冲,数据按照从高位到低位的方式依次移出主机寄存器和从机寄存器,并且依次移入从机寄存器和主机寄存器。
当寄存器中的内容全部移出是,相当于完成了两个寄存器内容的交换。
SPI接口有主和从两种操作模式,通过MASTER/SLAVE位(SPICTL.2)选择操作模式以及SPICLK信号的来源,如图3所示:
图3SPI主控制器和从控制器的连接
2.2.3SPI的时钟极性和时钟相位
在数据交换之前,主节点和从节点使其内部移位寄存器加载存储器数据。
产生时钟信号时,主节点会通过MOSI线同步输出其移位寄存器。
同时,从节点在SIMO处从主节点读取第一位,并将其存储到存储器中,然后通过SOMI输出MSB。
主节点会在MISO处读取从节点的第一位,并将其存储到存储器中以待稍后处理。
整个过程将一直持续,直至交换完所有数据位,然后主节点使时钟空闲并通过/SS禁用从节点。
除设置时钟频率之外,主节点还会配置相对于数据的时钟极性和时钟相位。
这两个选项分别称作CPOL和CPHA,能够允许时钟信号实现180度相移且数据延迟半个时钟周期。
图4显示了相应的时序图。
图4时钟极性和相位的时序图
CPOL=0时,时钟在逻辑0处空闲:
如果CPHA=0,数据会在SCK的上升沿上读取,在下降沿上变化。
如果CPHA=1,数据会在SCK的下降沿上读取,在上升沿上变化。
CPOL=1时,时钟在逻辑高电平处空闲:
如果CPHA=0,数据会在SCK的下降沿上读取,在上升沿上变化。
如果CPHA=1,数据会在SCK的上升沿上读取,在下降沿上变化。
从节点独立寻址时,主节点必须提供多个从选择信号。
该结构一般用在数据采集系统中,其中的多个模数转换器(ADC)和数模转换器(DAC)都必须单独接入。
菊花链式从节点需要主节点提供唯一的从选择信号,因此该结构要求同时启用所有从节点,以确保菊花链内通过所有移位寄存器的数据流不会中断。
典型的应用为工业级I/O模块中的级联多通道输入串行器和输出驱动器。
见图下5主节点与独立从节点(左)以及菊花链式从节点(右)进行通信
图5主节点与独立从节点(左)以及菊花链式从节点(右)进行通信
在SPI操作中,最重要的两项设置就是时钟极性(CPOL或UCCKPL)和时钟相位(CPHA或UCCKPH)。
时钟极性设置时钟空闲时的电平,时钟相位设置读取数据和发送数据的时钟沿。
主机和从机的发送数据是同时完成的,两者的接收数据也是同时完成的。
所以为了保证主从机正确通信,应使得它们的SPI具有相同的时钟极性和时钟相位。
2.3SPI的应用特点
应用:
PI接口的全称是"SerialPeripheralInterface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。
SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。
SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。
特点:
SPI一共有11位有用信号,每位信号差分成两个信号用来提高传输抗干扰性,在物理连接上用标准25芯D型插头座(DB25)传输,因此连线多且复杂,传输距离短,容易出现故障。
而ASI(异步串行接口)用串行传输,只需要一根同轴电缆线,连线简单,传输距离长。
缺点:
没有指定的流控制,没有应答机制确认是否接收到数据。
3设计方案
主机只是仿真用的电路,是负责输出SPI的三个信号。
从板电路图是实用的电路,或者说是被仿真的电路。
根据本次实验的设计要求,主机设计被分为两个主要模块:
微控制器接口模块和SPI接口模块。
微控制器接口模块负责与微控制器通信。
SPI接口模块负责与SPI器件通信。
系统采用模块化设计,设计中的微控制器接口采用独立的Verilog HDL模块,该模块通过一组寄存器与SPI接口连接模块连接。
。
因此,可以非常容易地采用其它微处理器接口替代该模块。
从机的设计也被分为两个主要模块,分为16路开关量输出电路的设计和一路摸拟量输出电路的设计。
所谓开关量就是只有高或低两个电平的数字信号,所谓模拟量是能连续变化的,这里具体来说是8位数字信号用简单的电阻转换得来的。
4SPI主机接口设计
4.1SPI总线标准
SPI总线包括4根信号线,SerialClock((SCK),MasterOutSlaveIn(MOSI),MasterInSlaveOut(MISO)和SlaveSelected(SS_N),负责在不同器件之间传递信息。
SCK信号由SPI主机驱动,管理数据传输过程。
主机以不同的波特率传输数据,数据线每传输1bit的数据SCK切换1次状态(1->0或者0->1)。
在面向字节的数据传输过程中,SPISpecification提供两种不同的时钟方案以及时钟极性选择,主机可以从四种不同的SCK传输速率中选择一种。
数据位在SCK的某个时钟沿(上升沿或者下降沿)被移出,在另一个的时钟沿,数据信号稳定时被采样。
主机将输出数据发送到MOSI,MOSI信号作为输入数据移入被选择的从机。
MISO数据线包含从机的输出数据,这些数据会被移入主机。
SPI总线在同一时刻只能有一个从机传输数据。
在组成SPI系统时,所有SCK、MOSI和MISO引脚都会被连接在一起。
系统中只能有1个器件被配置成主机,总线上的其它器件都被配置成从机。
主机从SCK和MOSI引脚上输出数据到从机的SCK和MOSI引脚。
被选择的从机可以从其MISO引脚输出数据到主机的MISO。
SS_N控制线通过系统硬件选择某个器件作为从机,SS_N控制线可以独立选择SPI从机器件。
没有被选择的从机会将从总线上断开。
如果器件的从机选择引脚不处于低电平,那么该器件会忽略SCK信号,并将MISO输出引脚与总线保持三态。
SS_IN_N控制线是SPI主机的输入信号,用于指示多主机总线冲突(总线上有多个器件希望成为主机)。
如果主机的SS_IN_N信号被置位,表示总线上的其它器件正在尝试成为主机,而寻址该器件作为从机。
如果总线上有多于1个器件尝试成为主机,SS_IN_N信号置位,自动禁止SPI主机向外输出信号。
SPI进行数据传输的时钟信号的极性和相位可以修改。
SPI可以选择不同的时钟极性(CPOL),即可以选择在高电平或者低电平进行数据传输,时钟极性的选择对于数据传输格式没有任何影响。
如果选择CPOL=“0”,表示空闲状态时SCL处于低电平,如果CPOL=“1”,空闲状态时SCK高电平。
通过时钟相位选择(CPHA)可以从两种基本的传输格式中选择1种。
如果CPHA=“0”,数据在SS_N置位后SCK的第1个跳变沿(上升沿或者下降沿)有效。
如果CPHA=“1”,数据在SS_N置位后SCK的第2个跳变沿(上升沿或者下降沿)有效。
SPI主机与其通信的从机在时钟的相位和极性上应该保持一致。
图6CPHA=0时SPI总线数据传输时序
图6给出的是CPHA=0时,SPI数据传输过程的时序图。
图6给出了SCK选择正极性和负极性两种情况的波形。
第一个时钟周期的前半个周期,SCK信号处于无效电平。
这种传输格式下,SS_N的下降沿表示数据传输的开始。
因此,完成1个字节的数据传输后,SS_N信号必须清零,在下一个字节开始传输时,SS_N重新置位。
如果在SS_N信号有效期间(低电平),如果有SPI从机请求写数据到SPI数据寄存器,将导致出现写错误。
图7CPHA=1时SPI总线数据传输时序
图7给出的是CPHA=1时,SPI数据传输过程的时序图。
这种情况下的数据传输以时钟的有效沿(无效电平到有效电平的跳变)作为开始标志。
SCK的第一时钟沿表示数据传输的开始,在两次输出期间信号SS_N可能保持低电平。
这种传输格式适合于只有单主机和单从机的情况。
SPI数据传输发生时,8bit一个字节的数据从一个接口引脚移出(Shift out),同时不同的8bit的数据被移入另一个接口引脚。
这可以理解为在SPI主机器件上有1个8位的移位寄存器,从机上器件上有一个8位的移位寄存器,两者连接在一起组成一个环形的16位的移位寄存器。
数据传输发生时,16位的移位寄存器会移动8个位置,因此,可以实现在主机和从机器件之间交换8bit的数据。
SPI Specification详细地介绍了SPI总线上字节数据传输的时序和波形,但是SPI Specification并没有规定基于这种传输方式的数据通信协(data protocol),也就是说,SPI Specification并没有指定第1个字节包含的地址或者数据。
当通过SPI总线进行通信时,首先需要确定通信协议,以使通信过程中的主机和器件可以正确判断当前数据是命令、地址,以及数据传送方向等。
本设计实现的SPI主机并不要求具体的通信协议,只要求微控制器按照正确的顺序将需要传输的数据置于SPI总线。
所有在SPI总线上接收的数据都会被存储到接收寄存器,已被用户逻辑使用。
所有写入到发送寄存器的数据都会被发送到SPI总线。
4.2SPI主机功能描述
本次设计的SPI主机特征如下:
(1)微控制器接口;
(2)多主机冲突检测和中断;
(3)支持8个外部从机;
(4)支持四种传输协议,通过选择时钟极性和时钟相位;
(5)SPI传输完成可以向微处理器产生中断信号;
(6)支持四种不同的传输速率;
4.3单片机扩展SPI总线的系统框图
对于一般51系列,常采用“主MCU+多个从器件”的主从模式,如下图8
单片机与外围器件在时钟线SCK、数据线MISO和MOSI都是同名端相连。
扩展多个外围器件时,SPI无法通过数据线译码选择,故接口的外围器件都有片选端。
在扩展单个SPI器件时,外围器件的片选端可以接地或通过I/O口控制;在扩展多个SPI器件时,单片机应分别通过I/O口线来分时选通外围器件。
在SPI串行扩展系统中,如果某一从器件只作输入(如键盘)或只作输出(如显示器)时,可省去一条数据输出(MISO)或一条数据输入(MOSI),从而构成双线系统(接地)。
SPI系统中从器件的选通依靠其引脚,数据传送软件十分简单,省去了传输时的地址选通字节。
但在扩展器件较多时,连线较多。
图8单片机扩展SPI总线的系统结构
对于本次实验采用89C51当作主机,利用P0口产生控制信号,P0.0模拟MCU的数据输出端(MOSI),P0.1模拟SPI的SCK输出端,P1.2模拟SPI的从机选择端,P0.3模拟SPI的数据端(MISO)。
仿真图见下图9
图9主机仿真结果图
4.4单片机SPI总线的时序模拟
单片机读(从器件输出)时,在选通有效的情况下,SCK的下降沿时从器件将数据放在MISO线上,单片机延时并采样MISO线,将数据位读入。
然后将SCK置为高电平形成上升沿,数据被锁存。
单片机写(从器件输入)操作类似。
见下图10
数据线上输出数据的变化以及输入数据时的采样,都取决于SCK。
但对于不同的外围芯片,有的可能是SCK的上升沿起作用,有的可能是SCK的下降沿起作用。
图10单片机SPI总线的时序模拟
5从机的接口设计
5.1从机设计原理
基于主机已确定好数据传输模式及其时序,对于从机而言,采用FPGA实现SPI总线从机接口[6],当从机要向主机传送数据时,先使/SW信号有效,通知主设备有数要发送,主设备收到信号后,就使/SS信号有效,使从设备端准备好发送数据,并产生时钟信号SCLK,在SCLK的上升沿,从设备将数据经过MISO端送出,最先发送最高位,最后发送最低位,同时,在时钟的下降沿,主设备收取数据。
当从设备没有数据发送的时候,就使/SW无效,此时主设备不在产生同步时钟,也并不读取数据。
如下图11所示为从机SPI总线接口工作时序。
图11从机SPI接口工作时序图
5.274HC595资料
5.2.174HC595管脚
特点:
8位串行输入/8位串行或并行输出存储状态寄存器,三种状态
输出寄存器(三态输出:
就是具有高电平、低电平和高阻抗三种输出状态的门电路。
)可以直接清除100MHz的移位频率。
图1274HC595管脚
Q0…Q78位并行数据输出,其中Q0为第15脚
GND第8脚地
Q7'第9脚串行数据输出
MR第10脚主复位(低电平)
SHCP第11脚移位寄存器时钟输入
STCP第12脚存储寄存器时钟输入
OE第13脚输出有效(低电平)
DS第14脚串行数据输入
VCC第16脚电源
74595的数据端:
QA--QH:
八位并行输出端,可以直接控制数码管的8个段。
QH':
级联输出端。
将它接下一个595的SI端。
SI:
串行数据输入端。
74595的控制端说明
/SCLR(10脚):
低电平时将移位寄存器的数据清零。
通常我将它接Vcc。
SCK(11脚):
上升沿时数据寄存器的数据移位。
QA-->QB-->QC-->...-->QH;下降沿移位寄存器数据不变。
(脉冲宽度:
5V时,大于几十纳秒就行了。
我通常都选微秒级)
RCK(12脚):
上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。
通常我将RCK置为低点平,当移位结束后,在RCK端产生一个正脉冲(5V时,大于几十纳秒就行了。
我通常都选微秒级),更新显示数据。
/G(13脚):
高电平时禁止输出(高阻态)。
如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。
比通过数据端移位控制要省时省力。
(1)74164和74595功能相仿,都是8位串行输入转并行输出移位寄存器。
74164的驱动电流(25mA)比74595(35mA)的要小,14脚封装,体积也小一些。
(2)74595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。
这在串行速度慢的场合很有用处,数码管没有闪烁感。
(3)595是串入并出带有锁存功能移位寄存器,它的使用方法很简单,在正常使用时SCLR为高电平,G为低电平。
从SER每输入一位数据,串行输595是串入并出带有锁存功能移位寄存器,它的使用方法很简单,如下面的真值表,在正常使用时SCLR为高电平,G为低电平。
从SER每输入一位数据,串行输入时钟SCK上升沿有效一次,直到八位数据输入完毕,输出时钟上升沿有效一次,此时,输入的数据就被送到了输出端。
入时钟SCK上升沿有效一次,直到八位数据输入完毕,输出时钟上升沿有效一次,此时,输入的数据就被送到了输出端。
5.2.274HC595具体使用的步骤
第一步:
目的:
将要准备输入的位数据移入74HC595数据输入端上。
方法:
送位数据到_595。
第二步:
目的:
将位数据逐位移入74HC595,即数据串入
方法:
SCK_595产生一上升沿,将PSI_595上的数据移入74HC595中.从低到高
第三步:
目的:
并行输出数据。
即数据并出
方法:
P1.1产生一上升沿,将由SI_595上已移入数据寄存器中的数据送入到输出锁存器。
说明:
从上可分析:
从SCK_595产生一上升沿(移入数据)和RCK_595产生一上升沿(输出数据)是二个独立过程,实际应用时互不干扰。
即可输出数据的同时移入数据。
5.2.374HC595真值表
表一74HC595输入输出功能真值表
SHCP
STCP
OE
MR
DS
Q7'
Qn
×
×
L
L
×
L
NC
MR为低电平时仅仅影响移位寄存器
×
↑
L
L
×
L
L
空移位寄存器到输出寄存器
×
×
L
L
×
L
Z
清空移位寄存器,并行输出为高阻状态
↑
×
H
H
H
Q6
NC
逻辑高电平移入移位寄存器状态0,包含所有的移位寄存器状态移入
×
↑
L
H
×
NC
Qn'
移位寄存器的内容到达保持寄存器并从并口输出
↑
↑
L
H
×
Q6'
Qn'
移位寄存器内容移入,先前的移位寄存器的内容到达保持寄存器并出
注释:
H=高电平状态
L=低电平状态
↑=上升沿
↓=下降沿
Z=高阻
NC=无变化
×=无效
当MR为高电平,数据在SHCP上升沿进入移位寄存器,在STCP上升沿输出到并行端口,OE为使能端,低电平有效,当OE为低时,输出使能,为高关闭使能,并不影响其他输入端。
5.2.474HC595框图
图13 74HC595功能框图
图1474HC595时序图
图1574HC595逻辑框图
5.374HC595的连接原理图
SPI是一个串行输入输出的接口,使用串转并的接口芯片可以实现扩展I/0口。
74HC595芯片为一种常用的8位串转并移位寄存器芯片。
本系统利用74HC595来驱动静态共银LED。
74HC595的主要优点:
具有数据存储寄存器。
在移位过程中。
输出端的数据可以保持不变。
这在串行速度慢的场合很有用处,LED没有闪烁感。
80C51作在SPI主模式下。
图15为74HC595逻辑图。
图中,SI为串行数据输入引脚,用来连接89C51的MOSI功能引脚;SCK为移位寄存器的时钟输入,连接89C51串行时钟线SCK;为清移位寄存器引脚;RCK为锁寄存器锁存时钟引脚;即输出触发端与SSEL连接;为输出使能引脚;SQH为串行数据输出引脚,连接MISO;QA~QH引脚为并行输出。
当为高电平、使能接低时,SCK产生一个上升沿,SI引脚当前电平值将在移位寄存器中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子线路 仿真技术 课程设计 说明书 剖析