信号源FPGA概要设计0528.docx

上传人:b****8 文档编号:11356804 上传时间:2023-02-28 格式:DOCX 页数:45 大小:1.40MB
下载 相关 举报
信号源FPGA概要设计0528.docx_第1页
第1页 / 共45页
信号源FPGA概要设计0528.docx_第2页
第2页 / 共45页
信号源FPGA概要设计0528.docx_第3页
第3页 / 共45页
信号源FPGA概要设计0528.docx_第4页
第4页 / 共45页
信号源FPGA概要设计0528.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

信号源FPGA概要设计0528.docx

《信号源FPGA概要设计0528.docx》由会员分享,可在线阅读,更多相关《信号源FPGA概要设计0528.docx(45页珍藏版)》请在冰豆网上搜索。

信号源FPGA概要设计0528.docx

信号源FPGA概要设计0528

信号源系统FPGA概要设计

北京阿格思科技有限公司

2010-4-11

历史记录:

版本

设计

审核

说明

V0.1

肖晖

肖晖

初次设计

V0.2

周福刚

补充系统框图(模拟和数字),时钟域分析图,模块端口信号图以及主状态图。

目录:

1.系统简要说明

1.1设计目的

为实现在FCT200-HD系统中,完成对于不同厂家与不同类型的数字电视主板测试的测试信号驱动。

1.2设计平台

使用ISE11.4开发环境,使用Verliog语言进行设计。

1.3设计输入输出及参考文档

设计输入:

《FCT200-HD平台信号源系统概要设计》。

设计输出:

指导详细FPGA逻辑设计。

1.4系统框图及工作模式说明

1.4.1整体系统框图描述

下图为系统总体框图(数字部分):

下图为系统总体框图(模拟部分):

1.4.2整体系统时钟域分析

●模拟部分时钟域

●数字部分时钟域

1.4.3整体系统顶层外端口定义

系统顶层TOP外端口信号定义:

1.4.4系统工作模式描述

FPGA内部有以下3种主要工作模式:

A.数据下载模式

数据下载模式是指在外部主机的控制下,将图形数据文件下载到FLAH芯片中。

按以下步骤进行:

STEP1:

主机接口模块在外部主机控制下填充数据RAM。

STEP2:

主机接口模块在外部主机控制下填充指令RAM。

STEP3:

主机接口模块在外部主机控制下启动中心控制模块。

STEP4:

中心控制模块读指令RAM,获取FLASH目的地址以及数据长度。

STEP5:

中心控制模块传递地址及数据信息到FLASH接口模块,并启动FLASH接口模块的写进程。

STEP6:

中心控制模块监测FLASH写进程(判断超时)。

STEP7:

中心控制模块将FLASH写进程结果写回到指令状态RAM,并通知主机接口模块FLASH写进程结束。

特别注意:

外部主机必须处理并记录FPGA芯片中数据信息,包括数据长度、数据地址等,为后续的数据加载模式服务。

B.数据加载模式

数据加载模式是指在外部主机的控制下,将FLASH中的有效数据搬移到外部的DDR2内存中,按以下步骤进行:

STEP1:

主机接口模块在外部主机控制下填充指令RAM。

STEP2:

主机接口模块在外部主机控制下启动中心控制模块。

STEP3:

中心控制模块读指令RAM,获取FLASH目的地址以及数据长度以及DDR2内存的地址。

STEP4:

中心控制模块传递地址及数据信息到FLASH接口模块,并启动FLASH接口模块的读进程。

STEP5:

中心控制模块监测FLASH读进程(判断超时),并实时将FLASH中读出数据填充到数据RAM中。

STEP6:

FLASH读进程结束(无错误),中心控制模块将启动DDR2内存写进程,并将DDR2地址信息传递给外存接口模块,并交出数据RAM的控制权给外存接口模块。

FLASH读进程结束(有错误),则进程跳转到“STEP8”。

STEP7:

中心控制模块监测外存接口模块写进程(判断超时)。

STEP8:

中心控制模块将运行结果信息写回到指令状态RAM,,并通知主机接口模块操作结束。

特别注意:

外部主机必须将以前记录的FLASH中的正确信息传递给FPGA,FPGA并不进行数据的合法性与有效性的判断。

C.数据输出模式

数据输出模式是指在外部主机的控制下,将外部DDR2存储芯片中的数据,依照一定的格式,周期性的输出到外部的显示输出芯片中去,按以下步骤操作:

STEP1:

主机接口模块在外部主机控制下填充指令RAM。

STEP2:

主机接口模块在外部主机控制下启动中心控制模块。

STEP3:

中心控制模块读指令RAM,获取输出显示模式等信息以及数据长度和DDR2内存的地址。

STEP4:

中心控制模块启动数据输出进程(与数据输出接口模块使用FIFO进行数据对接)。

STEP6:

一次数据输出进程结束后,重复“STEP4”步骤直到中心控制模块启动新的操作为止。

●下图为数据下载FLASHOP操作模式相关工作模块在系统总体框图中的位置(图中红色标出)。

●下图为数据加载模式RELOAD相关工作模块在系统总体框图中的位置(图中红色标出)。

●下图为数据显示模式VOUT相关工作模块在系统总体框图中的位置(图中红色标出)。

1.5设计指标

外部使用200MHz的工作频率的DDR2芯片(16bit数据总线宽度,实现DDR2-400性能)。

内部状态使用200MHz的工作频率。

外部数据输出接口模块使用可编程PLL控制输出与工作频率,工作频率范围为35~200MHz。

使用SPARTAN-6XC6SLX16芯片实现上述设计。

1.6系统资源消耗评估

待定。

2.主机接口模块功能详细描述

2.1基本规格描述

主机接口模块的主机端使用SPI接口进行控制,使用局部时钟。

2.2主机接口模块端口信号描述

2.2.1信号说明

信号名

信号说明

SPI时钟信号

SPI数据输出通道,对于FPGA来说为输入

SPI片选信号

地址选择信号,用于选择RAM(指令/状态RAM和数据RAM);

系统复位信号;

系统清除当前状态信号

系统工作的起始信号,高有效

FLASH写进程判断(超时)

用于与ARM通信,为高时不接收数据,为低时接收ARM数据

系统请求向ARM发送数据

SPI数据线,ARM数据输入通道,FPGA数据输出

 

2.3状态机描述

2.3.1主状态图

1.信号说明

信号名

信号说明

指令写开始信号,CMDW_START=(SPI_CS==0&&ADDR==CMDW);

指令读开始信号,CMDW_START=(SPI_CS==0&&ADDR==CMDR)

数据写开始信号,DATAW_START=(SPI_CS==0&&ADDR==DATAW)

数据写开始信号,DATAR_START=(SPI_CS==0&&ADDR==DATAR)

读(或写)RAM的基地址,不同前缀(*)表示不同状态

判断ADDR信号为指令写的参数

判断ADDR信号为数据写的参数

判断ADDR信号为指令读的参数

判断ADDR信号为数据读的参数

RAM读和写的停止信号,STOP=SPI_CS;

2.状态说明

1)IDLE状态:

上电或复位后状态,BUSY信号为低,当满足条件SPI_CS==0&&ADDR==X时,则进入X状态(X分别CMD_RAM_WR,CMD_RAM_RD,DATA_RAM_WR,DATA_RAM_RD)

2)CMD_RAM_WR状态:

指令RAM写状态,向指令RAM中写入指令数据,给出完成该状态的控制信号CMDW_START,CMDW_BASE_ADDR,BUSY信号为低,当信号SPI_CS==1时,状态结束,跳回IDLE状态;

3)DATA_RAM_WR状态:

指令RAM写状态,向数据RAM中写入指令数据,给出完成该状态的控制信号DATAW_START,CMDW_BASE_ADDR,BUSY信号为低,当信号SPI_CS==1时,状态结束,跳回IDLE状态;

4)CMD_RAM_RD状态:

指令RAM读状态,从指令RAM中读出指令数据,给出完成该状态的控制信号CMDR_START,CMDR_BASE_ADDR,并将BUSY信号拉高,当信号SPI_CS==1时,状态结束,跳回IDLE状态;

5)DATA_RAM_WR状态:

指令RAM写状态,从数据RAM中读指令数据,给出完成该状态的控制信号DATAR_START,DATAR_BASE_ADDR,并将BUSY信号拉高,当信号SPI_CS==1时,状态结束,跳回IDLE状态;

2.3.2子状态图

 

子模块A:

1.信号说明

信号名

信号说明

2.状态说明

 

子模块B:

1.信号说明

信号名

信号说明

2.状态说明

2.4主要输入输出信号规格描述

1)根据主状态机可以将这个模块分为四个独立模块,分别是指令RAM写模块,数据RAM写模块,指令RAM读模块,数据RAM读模块,其中指令RAM写模块和数据RAM写模块功能相同,仅仅是数据位数不同,读模块也是一样,下面各取一个进行说明;

顶层模块主要内部信号:

信号名

信号说明

DATAR_BASE_ADDR

将数据从RAM中读出的基地址

STOP

RAM读和写状态的停止信号

SPI_CLK_R

系统时钟MCLK检测到的SPI_CLK上升沿标志信号

SPI_CLK_F

系统时钟MCLK检测到的SPI_CLK下降沿标志信号

2)指令RAM写模块内部结构

上面结构包括了整个写模块的输入输出和内部连接信号

a)输入信号

信号名

信号说明

CLK

系统时钟

RST

复位信号,由信号RESET和CLEAR产生,RST=RESET||CLEAR

SPI串行数据输入,SPI_DOUT

写模块启动信号(*代表CMD和DATA,即CMDW_START和DATAW_START)

移位使能信号,WR_SHIFT=SPI_CLK_F

向RAM中写数据的基地址,CMDW_BASE_ADDR

b)输出信号

信号名

信号说明

CMDW_D[N-1:

0]

向RAM中写的数据(指令N=32,数据N=8)

CMDW_WE

RAM的写使能信号,1为写,0为读

CMDW_EN

RAM使能信号,只有该信号有效时,向RAM发送的读写命令才有效

CMDW_ADDR

向RAM发送的读写地址

c)内部信号

信号名

信号说明

写RAM模块数据输入端口,接收移位模块的并行输出

将串行数据转为并行的数据输出,由移位模块发送给写模块

写模块加载新的数据使能信号

移位模块产生,通知写模块在写完最后一个数据后结束写进程

移位计数器,用于控制数据有效位数(指令为32位,数据为8位)

地址偏移量,初始值为0,每完成一次写RAM操作加1

3)指令RAM读模块内部结构

上面结构包括了整个读模块的输入输出和内部连接信号

a)输入信号

信号名

信号说明

CLK

系统时钟MCLK

RST

复位信号,由信号RESET和CLEAR产生,RST=RESET||CLEAR

DIN[N-1:

0]

从RAM中读取的数据输入端口(指令N=32,数据N=8)

*R_START

读模块启动信号,(*表示指令或数据,即分别为CMDR_START或DATA_START)

RD_SHIFT

移位使能信号,RD_SHIFT=SPI_CLK_R

BASE_ADDR

向RAM中读数据的基地址

b)输出信号

信号名

信号说明

SDOUT

串行输出,输出个外部接口SPI_DIN

CMDR_WE

RAM的写使能信号,1为写,0为读

CMDR_EN

RAM使能信号,该信号有效时,向RAM发送的读写命令才有效

CMDR_ADDR

向RAM发送的读写地址

c)内部信号

信号名

信号说明

DOUT[N-1:

0]

读模块将RAM中读取的数据发送给移位输出模块的端口,(指令N=32,数据N=8)

PDIN[N-1:

0]

移位模块并行输入数据端口,(指令N=32,数据N=8)

REQ

读模块向移位输出模块发送的读取新的数据的请求信号

ACK

移位输出模块读取新的信息时回应读模块的信号

*R_CNT

移位计数器,用于控制移位有效数据(*分别表示指令和数据,指令为32位,数据位8位)

OFFSET

地址偏移量,初始值为0,数据被移位输出模块加载后(ACK==1),加1

 

3.FLASH接口模块功能详细描述

3.1基本规格描述

使用现成的FLASH接口控制完成FLASH接口控制设计(详见“新数据采集板FPGA逻辑设计”文档)。

下图为flash模块端口信号定义block图:

3.2信号描述

信号名

信号说明

3.3状态机描述

3.4主要输入输出信号规格描述

4.外存接口模块功能详细描述

4.1基本规格描述

使用IP生成工具生成现成的DDR2控制IP核,围绕现成IP核进行后续设计。

4.2IP信号及整体外存模块层次描述

4.2.1IP接口信号

上图为使用IP生成的DDR2SDRAM控制器端口及模块,下面将对用户接口信号做说明;

用户接口信号说明

信号名

I/O

信号说明

sys_clkandsys_clkb

I

系统时钟的差分时钟对,这里可以选择单端时钟信号,则只需要sys_clk信号

reset_in_n

I

复位信号,默认情况下低有效

cntrl0_burst_done

I

用于终止读或写命令,在给出最后一个地址后将信号拉高4个周期(若burst长度为4,为2个周期)

cntrl0_user_command_register

I

用户命令,user_command[2:

0]

 

user_command[2:

0]

user_commandDescription

 

 

000

无操作

 

 

010

初始化

 

 

100

写命令

 

 

110

读命令

 

 

other

预留

 

 

 

 

 

cntrl0_user_data_mask

I

写入数据掩码

cntrl0_user_input_data

I

DDR2SDRAM输入数据

cntrl0_user_input_address

I

写入数据地址,由bankaddress,columnaddress,rowaddress组成

cntrl0_init_done

O

初始化结束标志信号

cntrl0_ar_done

O

自动刷新结束标志信号

cntrl0_auto_ref_req

O

DDR2SDRM自动刷新请求信号

cntrl0_user_cmd_ack

O

确认用户读写命令信号,在这个信号给出前,用户不能给出新的命令

cntrl0_clk_tb

O

输出0°相移时钟信号,用于与用户同步

cntrl0_clk90_tb

O

输出90°相移时钟信号,用于与用户同步

cntrl0_sys_rst_tb

O

通过系统复位输入生成b

cntrl0_sys_rst90_tb

O

通过系统复位输入生成的90度相移复位

cntrl0_sys_rst180_tb

O

通过系统复位输入生成的180度相移复位

cntrl0_sys_user_data_valid

O

输出数据有效标志信号

cntrl0_user_output_data

O

输出数据

4.2.2外存模块整体框图

1)DDR2_TOP模块为顶层,接收外部读写控制信号,地址信号,控制内部各模块工作;

1)DATA_IN模块,控制FIFO_IN模块的读取,完成向SDRAM中输入数据;

2)ADDR&&CMD模块,给出读写地址和读写命令;

3)DATA_OUT模块,将DDR2中读出的数据写入FIFO_OUT;

4)FIFO_IN模块,DDR2和FLASH之间数据接口;

5)FIFO_OUT模块,DDR2和输出模块数据接口;

6)WRITE模块,产生写的地址和命令;

7)READ模块,产生读的地址和命令;

4.3状态机描述

4.3.1DDR2模块主状态图

1.信号说明

信号名

信号说明

RST_F

DDR2SDRAM复位结束标志信号,

RST_F=sys_rst_tb&&sys_rst90_tb&&sys_rst180_tb

INIT_DONE

初始化结束标志信号

WRITE_STR

写过程开始信号

READ_STR

读过程开始信号

BUSY

DDR2模块在进行读写时为高,不接受外部指令;在READY时为低,可以接受外部指令

WR_BASE_ADDR

每一次写数据的起始地址

RD_BASE_ADDR

每一次读数据的起始地址

REQ

外部输入读或写命令前发请求信号

ACK

回应外部请求信号,当DDR2未进行读写时回应请求

WR_FINISH

写结束标志信号

RD_FINISH

读结束标志信号

2.状态说明

1)IDLE状态:

上电或复位后状态,当所有复位操作完成后进入INIT状态

2)INIT状态:

对DDR2SDRAM进行初始化,发送初始化命令,等待初始化完成(INIT_DONE=1)后进入READY状态

3)READY状态:

根据外部读写命令和地址,判断进入相应状态,并给出起始地址;

4)WRITE状态:

向DDR2中写入数据状态,当WR_FINISH有效后进入READY状态;

5)READ状态:

向DDR2中读取数据状态,当RD_FINISH有效后进入READY状态;;

4.3.2DDR2写过程的地址写入状态图

1.信号声明

信号名

信号说明

WRITE_STR

写开始信号,主状态机给出的写DDR2开始信号

USER_CMD_ACK

用户命令确认信号,DDR2SDRAM给出

OFFSET

写地址偏移量,用于控制写地址增加,可通过设置其最大值来确定DDR2一次写入数据包的大小

ADDR

写地址ADDR=WR_BASE_ADDR+OFFSET;

WR_BASE_ADDR

外部给出的写起始地址;

CLK0_TB

时钟信号,由DDR2SDRAM的IP接口给出,用于同步

FINISHADDR

写入地址的最大值,WR_BASE_ADDR+OFFSET_MAX

OFFSET_MAX

OFFSET最大值,设置后可以确定DDR一次写数据包大小

BURST_DONE

用于终止读或写命令,在给出最后一个地址后将信号拉高保持4个周期(若burst长读为4,则保持2个周期)

BURST_CNT

BURST_DONE命令计数器,通过计数保证BURST_DONE保持足够的有效时间

STOP

写数据模块停止信号,当完成一个数据包写入后,将信号置1,令写数据模块停止工作;

2.状态说明

1)IDLE状态:

上电或复位后初始状态,当WRITE_STR信号为1,同时USER_CMD_ACK信号为0时进入ADDR状态,否则在IDLE状态;

2)ADDR状态:

给出写命令和当前地址,当USER_CMD_ACK为1时进入WAIT1状态;

3)WAIT1状态:

一个周期进入BURST_DONE状态;

4)BURST_DONE状态:

给出BURST_DONE命令,进入WAIT2状态;

5)WAIT2状态:

计数器BURST_CNT计数,当BURST_CNT=2时,将BURST_DONE信号拉低,进入JUDGE状态;

6)JUDGE状态:

判断OFFSET的值,是否完成2K数据写入,完成进入IDLE状态,并将STOP信号拉高,同时发送写结束标志信号WR_FINISH,控制写数据模块停止,否则将OFFSET加1,进入WAIT3状态;

7)WAIT3状态:

当FIFO中数据量足够完成一次写操作,并且USER_CMD_ACK=0时,进入ADDR状态继续写过程,否则在WAIT3状态等待满足上述条件;

4.3.3DDR2写过程的数据写入状态图

1.信号声明

信号名

信号说明

WRITE_STR

写开始信号,主状态机给出的写DDR2开始信号

DATA_CNT

数据计数器,控制数据满足一个BURST长度

CLK90_TB

数据写入时钟信号

STOP

写地址模块产生,表示已经完成一个数据包的写入

2.状态说明

1)IDLE状态:

上电或复位后状态,当WRITE_STR信号为1并且USER_CMD_ACK=0时,进入FIRST_DATA状态

2)FIRST_DATA状态:

向FIFO发送读使能信号,读出第一个要写入的数据,一个周期进入WAIT1状态;

3)WAIT1状态:

检测USER_CMD_ACK信号,保持第一个数据,并不再读取新的数据,当信号为1时,进入DATA_WR状态;

4)DATA_WR状态:

进入连续写入状态,令FIFO读使能有效,开始连续读出数据,同时数据计数器DATA_CNT开始计数,当计数器DATA_CNT=1时,将FIFO读使能拉低,当计数器DATA_CNT=2时进入WAIT2状态;

5)WAIT2状态:

检测USER_CMD_ACK信号,当信号为低,且FIFO中数据满足一次写过程,进入FIRST_DATA状态,若信号STOP为高,则表示完成一个数据包的写入,进入IDLE状态;

4.3.3DDR2读过程的状态图

1.信号说明

信号名

信号说明

READ_STR

读开始信号,主状态机给出的读DDR2开始信号

USER_CMD_ACK

用户命令确认信号,DDR2SDRAM给出

OFFSET

写地址偏移量,用于控制写地址增加,可通过设置其最大值来确定DDR2一次读取数据包的大小

ADDR

读地址ADDR=RD_BASE_ADDR+OFFSET;

RD_BASE_ADDR

外部给出的读起始地址;

BURST_CNT

BURST_DONE命令计数器,保证BURST_DONE命令保持足够的有效时间

FINISHADDR

读取地址的最大值,RD_BASE_ADDR+OFFSET_MAX

OFFSET_MAX

OFFSET最大值,设置后可以确定DDR2一次读取数据包的大小

2.状态说明

1)IDLE状态:

上电或复位后初始状态,当WRITE_STR信号为1,进入ADDR状态;

2)ADDR状态:

给出写命令和当前地址,当USER_CMD_ACK为1时进入WAIT1状态;

3)WAIT1状态:

一个周期进入BURST_DONE状态;

4)BURST_DONE状态:

给出BURST_DONE命令,进入WAIT2状态;

5)WAIT2状态:

计数器BURST_CNT计数,当BURST_CNT=2时,将BURST_DONE信号拉低,进入JUDGE状态;

6)JUDGE状态:

判断是否完成数据读取,完成进入IDLE状态,同时发送读结束标志信号RD_FINISH,否则进入WAIT3状态;

7)WAIT3状态:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 视频讲堂

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1