发明内容
本发明的目的是提供一种支持全功能的LPC总线主机端口的设计方法。该方法通过在主机端口设置主状态机、地址计数寄存器、数据计数寄存器、数据位选择寄存器、临时数据寄存器以及相应的输入输出端口,然后根据LPC协议标准,主状态机用于实现IO、内存、DMA和Firmware这几个类型的具体传输过程;地址计数寄存器用于记录地址位数、控制主状态机操作和地址信息传输;数据计数寄存器用于记录数据位数、控制主状态机操作和数据信息传输;数据位选择寄存器用于选择数据传输位数;临时数据寄存器用于存储外设读入的数据并输出;相应的输入输出端口用于写入与读出,完成主机向外设写入数据和主机从外设读出数据的功能。
具体地,本申请请求保护一种支持全功能的LPC总线主机端口的设计方法,其特征在于,该方法具体包括如下步骤:
在LPC总线主机端口设置主状态机,地址计数寄存器,数据计数寄存器,数据位选择寄存器,临时数据寄存器,输入输出端口;
其中,主状态机用于实现总线传输各个过程的控制;
地址计数寄存器用于对IO、内存及Firmware操作中的地址传输进行计数,从而控制地址信息传输至LAD[3:0]以及状态机的跳转;
数据计数寄存器用于对所有操作中的数据传输进行计数,控制数据信息传输至LAD[3:0]以及状态机的跳转;
数据位选择寄存器用于对传输的数据位进行选择,根据pstrb的输入译码成相应的值控制数据的传输;
临时数据寄存器在主机从外设读数据过程时,暂存数据信息,进而转换成对应的prdata信号输出;
输入输出端口,包括APB标准端口和LPC必选标准端口;
在进行LPC的传输时,先确定传输类型和数据位类型,再根据APB总线的协议标准,通过APB标准端口进行读写操作,从而实现了LPC主机与外设的各种类型的交互。
如上所述的支持全功能的LPC总线主机端口的设计方法,其特征还在于,主状态机的状态包括IDLE、START、CYCTYPE、ADDR、CHAN、SIZE、H_DATA、H_TAR1、H_TAR2、SYNC、P_DATA、P_TAR1。
如上所述的支持全功能的LPC总线主机端口的设计方法,其特征还在于,当主机向外设写入时,penable、psel按照APB标准激励,pwrite为“1”,paddr、pwdata分别发送地址和数据值到主状态机,通过adr_cnt与dat_cnt二者的计数操作,生成对应的值到lad_o输出。
如上所述的支持全功能的LPC总线主机端口的设计方法,其特征还在于,当主机从外设读取时,penable、psel按照APB标准激励,pwrite为“0”,paddr发送地址,通过主状态机读取流程从机数据将由lad_i写入到临时数据寄存器lpc_dat_i中,再通过dat_cnt的计数操作输出到prdata。
如上所述的支持全功能的LPC总线主机端口的设计方法,其特征还在于,LPC主机与外设的交互类型包括IO读写、内存读写、DMA读写和Firmware读写。
具体实施方式
本申请发明一种支持全功能的LPC总线主机端口的设计方法。该方法能够支持LPC协议标准的所有传输类型操作,包括IO读写、内存读写、DMA读写和Firmware读写,内核端根据不同类型发送不同命令即可实现不同传输方式。
下面以APB(Advanced Peripheral Bus APB总线)的内核接口为例,具体介绍LPC总线主机端口的结构以及工作流程。
一、本发明提供的LPC总线主机端口装置结构包括:
1、state,主状态机:
用于实现总线传输各个过程的控制,例如lframe的拉低、LAD[3:0]的驱动等。包含的状态有IDLE、START、CYCTYPE、ADDR、CHAN、SIZE、H_DATA、H_TAR1、H_TAR2、SYNC、P_DATA、P_TAR1。
2、adr_cnt,地址计数寄存器:
地址计数寄存器是3位寄存器,用于对IO、内存及Firmware操作中的地址传输进行计数,从而控制地址信息传输至LAD[3:0]以及状态机的跳转。
3、dat_cnt,数据计数寄存器:
数据计数寄存器是4位寄存器,用于对所有操作中的数据传输进行计数,控制数据信息传输至LAD[3:0]以及状态机的跳转。
4、xfr_len,数据位选择寄存器:
数据位选择寄存器是3位寄存器,用于对传输的数据位进行选择。根据pstrb的输入译码成相应的值控制数据的传输。
5、lpc_data_i,临时数据寄存器:
临时数据寄存器是32位寄存器,在主机从外设读数据过程时,暂存数据信息,进而转换成对应的prdata信号输出。
6、输入输出端口,包括:
1)APB标准端口:pclk、presetn、paddr、pwdata、pstrb、pwrite、penable、psel、pready、prdata、ps lverr;
2)LPC必选标准端口:lclk、lresetn、lframe、lad_i、lad_o;cycle类型选择:apb_tga;DMA功能通道:dma_chan_i,dma_tc_i。
二、工作流程
下面通过一个实施例对本发明所述的LPC总线主机端口装置的工作流程进行说明:
附图1为LPC总线主机结构示意图。其中pclk、lclk分别为APB总线和LPC总线的时钟;presetn和lresetn为对应复位信号。
在进行LPC的传输时,通过apb_tga端口输入相应值以确定是何种传输类型,通过pstrb端口输入相应值以确定数据位为BYTE、SHORT或WORD。
根据APB总线的协议标准,通过APB标准的地址、数据、控制等端口进行读写操作。
当主机向外设写入时,penable、psel按照APB标准激励,pwrite为“1”,paddr、pwdata分别发送地址和数据值到主状态机,通过adr_cnt与dat_cnt二者的计数操作,生成对应的值到lad_o输出;
当主机从外设读取时,penable、psel按照APB标准激励,pwrite为“0”,paddr发送地址,通过主状态机读取流程从机数据将由lad_i写入到临时数据寄存器lpc_dat_i中,再通过dat_cnt的计数操作输出到prdata,至此实现了LPC主机与外设的读写交互。
附图2为主状态机流程图。
主状态机的流程主要分为主体过程与分支过程,主体过程表明了LPC总线主机与外设交互的大体流程,分支过程主要是不同传输类型和读写的差异。
先对设计中的所有寄存器进行初始化;
主状态机默认进入空闲(IDLE)状态,检测psel选择信号是否被激励,是则继续进入下一状态START,否则保持当前状态;
START状态的作用是产生lframe_o信号表示传输的开始以及对Firmware类型的判断,首先拉低lframe_o,然后检测由apb_tga判断的cycle type是否为Firmware,是则跳转到ADDR,否则进入CYCTYPE;CYCTYPE状态根据不同的类型和读写驱动LAD[3:0]的编码以及分辨传输是否为DMA类型,若为DMA则进入CHAN,否则进入ADDR;ADDR进行地址的传输,地址传输结束后检测是否为Firmware,若是则进入SIZE,否则写数据进入H_DATA,读数据进入H_TAR1;H_DATA状态中主机发送数据到外设,完成后进入H_TAR1;H_TAR1是主机交换控制权1,根据协议主机驱动LAD[3:0]为4'b1111,完成后进入H_TAR2;H_TAR2是主机交换控制权2,根据协议此周期主机失去总线的控制,相应的LAD[3:0]为三态,之后进入SYNC;SYNC由外设插入等待周期,当检测到等待错误,则将pslverr信号拉高,之后进入P_TAR1;P_TAR1是外设交换控制权,之后状态机进入IDLE;P_DATA状态中外设发送数据到主机,完成后进入P_TAR1;CHAN是DMA传输类型的特殊状态,目的是为了将dma_chan_i信号的channel信息传送到LAD[3:0],完成后进入SIZE;SIZE是DMA与Firmware传输类型的特殊状态,确定数据传输位数,根据pstrb信号的输入译码为相应的xfr_len寄存器用于输出不同的LAD[3:0]值,此状态检测读写,写数据进入H_DATA,读数据则进入H_TAR1。
IO与内存的传输流程除了具体编码和地址位外是一致的,综合以上阐述,对不同类型不同读写的LPC典型传输流程总结如下:
当主机向外设写入:
1、IO/内存:IDLE→START→CYCTYPE→ADDR→H_DATA→H_TAR1→H_TAR2→SYNC→P_TAR1→IDLE。
2、DMA:IDLE→START→CYCTYPE→CHAN→SIZE→H_DATA→H_TAR1→H_TAR2→SYNC→P_TAR1→IDLE。
3、Firmware:IDLE→START→ADDR→SIZE→H_DATA→H_TAR1→H_TAR2→SYNC→P_TAR1→IDLE。
当主机从外设读取:
1、IO/内存:IDLE→START→CYCTYPE→ADDR→H_TAR1→H_TAR2→SYNC→P_DATA→P_TAR1→IDLE。
2、DMA:IDLE→START→CYCTYPE→CHAN→SIZE→H_TAR1→H_TAR2→SYNC→P_DATA→P_TAR1→IDLE。
3、Firmware:IDLE→START→ADDR→SIZE→H_TAR1→H_TAR2→SYNC→P_DATA→P_TAR1→IDLE。
显而易见地,上面所示的仅仅是本发明的一个具体实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据该实施方式获得其他的技术方案,都属于本发明保护的范围。
通过上述装置,即可以实现APB信号到LPC信号的转换,输出符合协议标准的LPC信号,且根据主状态机的工作流程,可以完整实现LPC总线所支持的IO、内存、DMA及Firmware四种传输类型。本申请所述的装置经过仿真验证证明了功能的正确性。使用这种LPC总线主机端口装置,结构清晰,状态机功能丰富,支持协议所有的传输类型,在SOC系统中的可以直接使用,应用方便,是解决LPC总线设计功能单一行之有效的方法。