首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

强大的防盗定位追踪系统方案,硬件原理、结构框图、软件流程、源码打包奉送(3)

强大的防盗定位追踪系统方案,硬件原理、结构框图、软件流程、源码打包奉送(3)

3.3硬件框图                                       
本系统采用了MicroBlaze_0核,MicroBlaze与BRAM的连接采用了LMB方式,与外围设备的连接采用了OPB总线方式其硬件结构图如下(其中只列出了与本系统有关的硬件结构块,省去了一些细节):


MicroBlaze_0                                                                          
MicroBlaze_0是基于Spartan-3E的微处理器IP核, MicroBlaze_0处理器采用RISC架构和哈佛结构的32位指令和数据总线。在本系统中,MicroBlaze是本系统中运算与控制的核心,它可以全速执行存储在片上存储器和外部存储器中的程序,并访问其中的数据。为了提高性能,MicroBlaze中设指令缓存和数据缓存。

MicroBlaze通过LMB与BRAM相连,通过dlmb对BRAM进行数据的读写,通过ilmb从BRAM中读取指令。MicroBlaze_0通过OPB来访问低速和低性能的系统资源,如LED,16M×8Flash,RS23_DTE,LCD等。下面再对这LMB和OPB两种总线加以介绍。

LMB
LMB(Local Memory Bus,局部存储总线,如图中dlmb与ilmb)是MicroBlaze与BRAM之间的信息传送线,分为dlmb(数据局部存储总线)和ilmb(指令局部存储总线),两种总线宽度均为32位。dlmb用于MicroBlaze从BRAM中读写数据,ilmb传送MicroBlaze从BRAM中读取的指令。

OPB
OPB(On-chip Peripheral Bus,片上外设总线)提供了MicroBlaze与低速外接设备之间的数据通路。OPB是一种完全同步总线, 它的功能处于一个单独的总线层级。它不是直接连接到处理器内核的。OPB接口提供分离的32 位地址总线和32位数据总线。处理器内核可以借助“PLB to OPB”桥,通过OPB访问从外设。作为OPB总线控制器的外设可以借助“OPB to PLB”桥,通过PLB访问存储器。

OPB上挂接了各种类型的外设。在本系统中,OPB上挂接的外设有Spartan-3E开发板上的Buttons_4Bit,DDR_SDRAM_16Mx16,DIP_Switches_4Bit,Flash_16Mx8,LEDs_8Bit,RS232_DTE,RS232_DCE,LCD,OPB_Timer。

BRAM
BRAM(Block Random Access Memory,块随机存储器)用于存放MicroBlaze核要运行的程序指令以及需要处理的数据或中间结果等。

BRAM通过LMB接口与LMB相连,进而与处理器相连。ilmb_cntlr为指令局部存储总线控制器,BRAM通过PORTA与ilmb_cntlr相连,ilmb_cntlr负责控制指令数据在LMB总线上的传送;dlmb_cntlr为数据局部存储总线控制器,BRAM通过PORTB与dlmb_cntlr相连,dlmb_cntlr负责控制数据在LMB总线上的传送。

Buttons_4Bit
Spartan-3E开发板上的4个瞬时按钮开关BTN_NORTH、BTN_EAST、BTN_SOUTH和 BTN_WEST及1个Rotary Push-Button Switch(旋转按钮)中使用了BTN_SOUTH和旋转按钮用于用户输入。其中BTN_SOUTH为复位键以重新执行程序,旋转按钮用于接收用户的追踪定位请求。其对应的引脚约束如下:

Net fpga_0_Buttons_4Bit_GPIO_in_pin<0> LOC=D18 | PULLDOWN;
Net fpga_0_Buttons_4Bit_GPIO_in_pin<1> LOC=H13 | PULLDOWN;
Net fpga_0_Buttons_4Bit_GPIO_in_pin<2> LOC=V4 | PULLDOWN;
Net fpga_0_Buttons_4Bit_GPIO_in_pin<3> LOC=V16 | PULLDOWN;
Flash_16Mx8                                             

本系统采用了Intel Strata Flash Parallel NOR Flash PROM来存放需要运行的程序。由于需要FPGA启动后自动加载程序并运行程序,所以需要把程序存储在非易失性存储器中。在本系统中选用16Mx8bit Flash存放程序(.elf文件)。FPGA启动时,存放在Flash中的FPGA配置信息与应用软件程序通过OPB总线自动加载到FPGA运行。其引脚约束较为复杂,在此只列出其控制引脚的约束语句:

Net fpga_0_FLASH_16Mx8_Mem_OEN_pin LOC=c18;
Net fpga_0_FLASH_16Mx8_Mem_OEN_pin IOSTANDARD = LVCMOS33;
Net fpga_0_FLASH_16Mx8_Mem_WEN_pin LOC=d17;
Net fpga_0_FLASH_16Mx8_Mem_WEN_pin IOSTANDARD = LVCMOS33;
Net fpga_0_FLASH_16Mx8_Mem_CEN_pin<0> LOC=d16;
Net fpga_0_FLASH_16Mx8_Mem_CEN_pin<0> IOSTANDARD = LVCMOS33;
Net fpga_0_FLASH_16Mx8_emc_ben_gnd_pin LOC=c17;
Net fpga_0_FLASH_16Mx8_emc_ben_gnd_pin IOSTANDARD = LVCMOS33;
Uart16550

本系统使用RS232-DTE与GPS模块连接,比特率为4800,对GPS数据的接收采用轮询方式;RS232-DCE与GSM模块连接,比特率为115200,对GSM信息的接收也采用轮询方式。MicroBlaze一次只对32位数据进行处理,而DTE与DCE每次只串行传送一位数据,而OPB16550串口实现了串行数据与并行数据的转化,Uart16550与系统总线的连接模式如下图:


引脚约束为:
Net fpga_0_RS232_DCE_sin_pin LOC=R7;
Net fpga_0_RS232_DCE_sin_pin IOSTANDARD = LVCMOS33;
Net fpga_0_RS232_DCE_sout_pin LOC=M14;
Net fpga_0_RS232_DCE_sout_pin IOSTANDARD = LVCMOS33;
Net fpga_0_RS232_DTE_sin_pin LOC=U8;
Net fpga_0_RS232_DTE_sin_pin IOSTANDARD = LVCMOS33;
Net fpga_0_RS232_DTE_sout_pin LOC=M13;
Net fpga_0_RS232_DTE_sout_pin IOSTANDARD = LVCMOS33;

LCD
Spartan-3E开发板上有2线16字符液晶显示器LCD。FPGA仅通过4位的数据接口线控制LCD。并且4根LCD数据线与StrataFlash 数据线复用。当存储器失能时(SF_CE0=1),FPGA用作全读/写通道给LCD。相反,当LCD读失能时(LCD_RW=0),FPGA用作全读/写通道给存储器。所以在对LCD进行控制时,首先是通过总线将LCD使能信号SF_CE0置低。对LCD的软件控制流程在上文中已有叙述,在此只列出其引脚约束:

Net lcdtest_0_lcddata_out_W_pin<7> LOC=M15;
Net lcdtest_0_lcddata_out_W_pin<7> IOSTANDARD = LVCMOS33;
Net lcdtest_0_lcddata_out_W_pin<6> LOC=P17;
Net lcdtest_0_lcddata_out_W_pin<6> IOSTANDARD = LVCMOS33;
Net lcdtest_0_lcddata_out_W_pin<5> LOC=R16;
Net lcdtest_0_lcddata_out_W_pin<5> IOSTANDARD = LVCMOS33;
Net lcdtest_0_lcddata_out_W_pin<4> LOC=R15;
Net lcdtest_0_lcddata_out_W_pin<4> IOSTANDARD = LVCMOS33;
Net lcdtest_0_LCD_E_W_pin LOC= M18;
Net lcdtest_0_LCD_E_W_pin IOSTANDARD = LVCMOS33;
Net lcdtest_0_LCD_RS_W_pin LOC=L18;
Net lcdtest_0_LCD_RS_W_pin IOSTANDARD = LVCMOS33;
Net lcdtest_0_LCD_RW_W_pin LOC=L17;
Net lcdtest_0_LCD_RW_W_pin IOSTANDARD = LVCMOS33;
返回列表