仓库管理知识培训_第1页
仓库管理知识培训_第2页
仓库管理知识培训_第3页
仓库管理知识培训_第4页
仓库管理知识培训_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VHDL硬件描述语言及其应用

-数字IC前端设计实例1VHDL硬件描述语言及其应用

-数字IC前端设计实例1讲授内容数字IC设计中的前端设计内容数字IC前端设计实例:UART文档阶段编码阶段验证阶段2讲授内容数字IC设计中的前端设计内容2数字IC设计流程3数字IC设计流程3initialfrontendbackendphysical

X=AandBY=CnorDABABXVVssVssVddABCDXYZXVddVSSVerification………SPEC…………ideatapeout4initialfrontendbackendphysical数字IC前端设计的层次前端设计可分3个阶段:文档阶段:SPEC->设计文档编码阶段:设计文档->HDL代码验证阶段:SPEC->验证平台->大量的验证5数字IC前端设计的层次前端设计可分3个阶段:5讲授内容数字IC设计中的前端设计内容数字集成电路前端设计实例:UART文档阶段编码阶段验证阶段6讲授内容数字IC设计中的前端设计内容6实例来源:某SoC平台7实例来源:某SoC平台7数字集成电路前端设计实例:UARTUART预期操作环境8数字集成电路前端设计实例:UARTUART预期操作环境8数字集成电路前端设计实例:UART实例:通用异步收发器UARTAPB外围总线的从设备硬件流控制模式:CTSN/RTSN握手协议采用的数据格式是8个数据位,1个可选的奇偶校验位以及1个停止位UART数据格式9数字集成电路前端设计实例:UART实例:通用异步收发器UAR文档阶段SPEC->设计说明定义接口:表格形式->接口一致性子模块划分子模块设计文档:设计描述:子模块设计指导->设计文档实现方法说明:流程图、状态图、时序图寄存器描述10文档阶段SPEC->设计说明101.SPEC模块功能:数据接收功能数据发送功能波特率生成器APB总线接口数据流模式控制……预期环境:APB总线其他UART……111.SPEC模块功能:111.SPECUART数据发送功能描述当UART发送器被使能可进行发送操作。其操作为将待发送8位数据转换成一个串行数据,按位时钟输出到发送器的串行输出端口上。在停止位发送完成后,如果没有新的数据传送到发送保持寄存器中,则发送器串行数据输出端保持高电平。数据发送完成置发送移位寄存器空标识位为1。当有新数据传送到空的发送保持寄存器中时,发送重新开始,发送移位寄存器空标识位被清0。假如发送器被禁止,则它将继续工作直到当前数据被完全发送完成。此时发送保持寄存器不能够重新装载数据。如果采用流控制方式,CTSN输入必须保持低电平,这样数据才能被发送。如果在发送过程中,被设置成高,移位寄存器中的数据被发送,完成后发送端保持不变直到CTSN被重新设置成0。121.SPECUART数据发送功能描述122.定义接口APB接口:PSEL: 输入--slaveselectPENABLE: 输入--strobe(选通脉冲)PADDR(7downto0):输入--addressbus(byte)PWRITE: 输入--writePWDATA(31downto0):输入--writedatabusPRDATA(31downto0):输出--readdatabusUART接口:RXD: 输入TXD: 输出CTSN: 输入RTSN: 输出其他接口:IRQ: 输出132.定义接口APB接口:133.子模块划分按功能划分按层次划分143.子模块划分按功能划分144.子模块设计文档:设计描述例:数据发送子模块功能设计描述输入信号:发送时钟(txtick):由波特率发生部件产生的基准时钟*8得到的位时钟,高电平有效发送器使能(TE):高电平有效发送器中断使能(TI):高电平有效奇偶校验选择(PS):“0”表示偶校验,“1”表示奇校验奇偶校验使能(PE):高电平有效流控制使能(FL):高电平有效。复位信号(rst):高电平有效输出信号:发送移位寄存器空(TS):说明发送移位寄存器中的数据已经发送完毕发送保持寄存器空(TH):说明先前的数据已经发送完毕,目前没有新的数据待发送。数据发送输出端(TXD)中断输出信号(IRQ)154.子模块设计文档:设计描述例:数据发送子模块功能设计描述14.子模块设计文档:设计描述数据发送:UART发送器的使能位(TE)控制,高电平有效。数据由发送保持寄存器(thold)传送到发送移位寄存器(tshift)中,并且将其转换成一个串行队列,输出到发送器的串行输出端口TXD上。它将自动在8位有效数据前添加开始位,并在数据后添加一位可选的奇偶校验位和一位停止位。在停止位发送完成后,如果没有新的数据传送到发送保持寄存器中,则发送器串行数据输出端保持高电平,并且设置发送移位寄存器空标识位(TSRE)为1。当有新数据传送到发送保持寄存器中时,判断发送保持寄存器空标识位(THRE)是否为1,如果为1且TI=1,则发出irq中断;如果TSRE=0,则发送开始,TSRE被清除。假如发送器被禁止,则它将继续工作直到当前数据被完全发送完成。此时发送保持寄存器不能够重新装载数据。流控制方式:CTSN输入必须保持低电平,这样数据才能被发送。如果在发送过程中,CTSN被设置成高,移位寄存器tshift中的数据被发送,完成后发送端保持高电平不变,直到CTSN被重新设置成0。164.子模块设计文档:设计描述数据发送:UART发送器的使能位4.子模块设计文档:模块实现方法数字IC=数据通路+控制逻辑数据通路:寄存器提取;存储器?控制逻辑:有限状态机:状态图,状态表……硬连逻辑:流程图,时序图……174.子模块设计文档:模块实现方法数字IC=数据通路+控制逻辑例:发送控制状态机18例:发送控制状态机18当前态次态转移条件操作输出IDLEIDLErst=1寄存器复位TXD=tshift(0)DATAtxen,txtick=1且thempty,ctsn=0thold->tshiftDATAIDLErst=1寄存器复位DATAtxtick=1求校验位;tshift移位PARITYtshift数据移空;txtick=1且paren=1求校验位;tshift移位tshift(0)=tparSTOPBITtshift数据移空;txtick=1且paren=0tshift移位tshift(0)=1PARITYIDLErst=1寄存器复位STOPBITtxtick=1tshift移位STOPBITIDLErst=1txtick=1寄存器复位tshift移位19当前态次态转移条件操作输出IDLEIDLErst=1寄存器复4.子模块设计文档:寄存器描述寄存器的功能:保持历史值数据通路:寄存器,计数器,移位器控制输出信号的行为:命令、控制寄存器如实反映当前电路工作状态:状态寄存器方法:保存采样信号值->历史值和当前值比较必要中间值:例如有限状态机的状态、跨周期信号等模块输出信号寄存器输出204.子模块设计文档:寄存器描述寄存器的功能:保持历史值20控制寄存器该寄存器用来控制UART的操作第0位:接收器使能(RE),高电平有效。第1位:发送器使能(TE),高电平有效。第2位:接收器中断使能(RI),高电平有效。第3位:发送器中断使能(TI),高电平有效。第4位:奇偶校验选择(PS),“0”表示偶校验,“1”表示奇校验。第5位:奇偶校验使能(PE),高电平有效。第6位:流控制使能(FL),高电平有效。第7位:回送使能(LB),高电平有效。第8位:外部时钟使能(EC),高电平有效,此时PIO[3]用作时钟。21控制寄存器该寄存器用来控制UART的操作21UART状态寄存器用来反映UART的状态第0位:接收数据就绪(DR),说明在接收保持寄存器中,数据已经准备就绪。第1位:发送移位寄存器空(TS),说明发送移位寄存器中的数据已经发送完毕。第2位:发送保持寄存器空(TH),说明先前的数据已经发送完毕,目前没有新的数据待发送。第3位:接收到暂停(BR),说明在数据接收过程接收到暂停信息。第4位:溢出(OV),说明由于超出限度一个或多个字符而丢失。第5位:奇偶错(PE),说明检测到奇偶错。第6位:格式错(FE),说明检测到格式错。22UART状态寄存器用来反映UART的状态22编码阶段编程前准备设计思路:设计文档->RTL代码?编码风格编码实例文件层次化管理23编码阶段编程前准备23编程前准备遵守工程指定命名及格式规则版本、设计日期、编者信息以及注释的使用标识符对应具体功能含义:如thempty(transmitholdempty)标识符表明信号/变量属性:如cts_n,cts_,ctsn24编程前准备遵守工程指定命名及格式规则24设计思路模块设计:考虑电路结构串行:对输入的处理分步骤进行(process)并行:对到达的信号同时处理(多个等价process)流水线:多步骤、每个步骤同时处理设计考虑:在内部模块之间的输入输出可采用组合逻辑,不同芯片之间必须采用寄存器输入输出(否则增加后端实现难度)尽量将组合电路和时序电路分开25设计思路模块设计:考虑电路结构25编码风格自顶向下规划并发:并行等价进程规划顺序:串行进程规划自底向上编码独立功能顺序编码:顺序语句->process并发进程:协调信号通信关系26编码风格自顶向下规划26自顶向下:并行等价进程规划baudop:process(rst,r_p,uarti_p)--baudrate/bitclockprocess--baudrategenerate--rx/txclock--resetoperationendprocess;apbop:process(rst,r_p,apbi) --apboperation--read/writeregisters(APBslaveInterface)--resetoperation--updateregisters--driveoutputsendprocess;txrxop:process(rst,r_p,apbi) --transmit/receiveroperation--filterrxdata--transmitteroperation--receiveroperation--resetoperation--updateregisters--driveoutputsendprocess;27自顶向下:并行等价进程规划baudop:process(自顶向下:串行进程的规划在最小信号间隔(clk)内更新信号及输出uartop:process(rst,r,apbi,uarti)--serialprocess variablev:uartregs;--baudrategenerate--read/writeregisters(APBslaveInterface)--rx/txclock--filterrxdata--transmitteroperation--receiveroperation--resetoperation--updateregisters rin<=v;--driveoutputsendprocess;28自顶向下:串行进程的规划在最小信号间隔(clk)内更新信号及编码实例:有限状态机实现

发送控制状态机29编码实例:有限状态机实现

发送控制状态机29caser.txstateis

whenidle=> --idlestateif(r.txtick='1')thenv.tsempty:='1';endif;

if((r.txenand(notr.thempty)andr.txtick)and (notctsn))='1'then

v.tshift:="10"&r.thold&'0'; v.txstate:=data; v.tpar:=r.parsel;v.irq:=r.tirqen; v.thempty:='1';v.tsempty:='0'; v.txclk:="00"&r.tick;v.txtick:='0';endif;数据发送代码段编码实例:有限状态机实现30caser.txstateis数据发送代码段编码实例:whendata=> --transmitdataframeifr.txtick='1'then v.tpar:=r.tparxorr.tshift(1); v.tshift:='1'&r.tshift(10downto1);

ifr.tshift(10downto1)="1111111110"then

ifr.paren='1'then v.tshift(0):=r.tpar;v.txstate:=parity; else v.tshift(0):='1';v.txstate:=stopbit; endif; endif;endif;数据发送代码段(续)编码实例:有限状态机实现31whendata=> --transmitdatawhenparity=> --transmitparitybitifr.txtick='1'then v.tshift:='1'&r.tshift(10downto1); v.txstate:=stopbit;endif;whenstopbit=> --transmitstopbitifr.txtick='1'then v.tshift:='1'&r.tshift(10downto1); v.txstate:=idle;endif;endcase;数据发送代码段(续)编码实例:有限状态机实现32whenparity=> --transmitpa

scaler:=r.scaler-1; --baudrategenerate(tick)if(r.rxenorr.txen)='1'thenv.scaler:=scaler;v.tick:=scaler(11)andnotr.scaler(11);ifv.tick='1'thenv.scaler:=r.brate;endif;endif;txclk:=r.txclk+1; --txclkgenerate(8*tick)ifr.tick='1'thenv.txclk:=txclk;v.txtick:=r.txclk(2)andnottxclk(2);endif;发送定标代码段:位时钟编码实例:控制信号33scaler:=r.scaler-1; --b编码实例:记录的使用->信号锁存typeuartregsisrecordrxen :std_logic; --receiverenabledtxen :std_logic; --transmitterenabledrirqen :std_logic; --receiverirqenabletirqen :std_logic; --transmitterirqenableparsel :std_logic; --parityselectparen:std_logic; --parityselectflow :std_logic; --flowcontrolenabledready :std_logic; --datareadyrsempty :std_logic; --receivershiftregisterempty(internal)tsempty :std_logic; --transmittershiftregisteremptythempty :std_logic; --transmitterholdregisteremptybreak :std_logic; --breakdetectedrhold :std_logic_vector(7downto0);rshift :std_logic_vector(7downto0);tshift :std_logic_vector(10downto0);34编码实例:记录的使用->信号锁存typeuartregs编码实例:记录的使用->信号锁存

thold :std_logic_vector(7downto0);irq :std_logic; --tx/rxinterrupt(internal)tpar :std_logic; --txdataparity(internal)txstate :txfsmtype;txclk :std_logic_vector(2downto0);--txclockdividertxtick:std_logic; --txclock(internal)rxstate :rxfsmtype;rxclk :std_logic_vector(2downto0);--rxclockdividerrxdb :std_logic_vector(1downto0);--rxdelaydpar:std_logic; --rxdataparity(internal)rxtick :std_logic; --rxclock(internal)tick :std_logic; --rxclock(internal)scaler :std_logic_vector(11downto0);brate :std_logic_vector(11downto0);rxf :std_logic_vector(7downto0);--rxdatafilteringbufferendrecord;35编码实例:记录的使用->信号锁存thold :编码实例:时钟同步architecturertlofuartistyperxfsmtypeis(idle,startbit,data,parity,stopbit);typetxfsmtypeis(idle,data,parity,stopbit);typeuartregsisrecord……signalr,rin:uartregs;begin uartop:process(rst,r,apbi,uarti)--serialprocess variablev:uartregs; ……

rin<=v; endprocess; regs:process(clk) --signalregisteredbybaseclk beginifrising_edge(clk)thenr<=rin;endif;endprocess;endarchitecture;36编码实例:时钟同步architecturertlofu文件层次化管理设计的层次化:顶层->底层:结构描述->行为描述不同用途文件:命名规则区分,如_top,_package等目录的层次化:工作目录不同目的文件->不同目录,如src,sim,doc……37文件层次化管理设计的层次化:37文件层次化管理

testbenchSourcetopTestbenchgeneratetestcaseharnesspackagesource38文件层次化管理testbenchSourcetopTe验证阶段验证环境和测试方案->testbench根据设计文档确定验证点(testcase)->验证文档:描述每个验证点的目的、具体实现步骤验证文档->testcase提取覆盖率分析->不理想->回到第2阶段记录验证结果->.log文件39验证阶段验证环境和测试方案->testbench39验证环境架构及建立方式基于软件模拟的层次式架构testcase层:由过程(procedure)调用组成行为模型以及BFM:不可综合的代码,描述系统环境中可能的其他电路模型或行为testbench:验证配置testbench组织:configurations装配testcase,行为模型,BFM以及待测模块DUT40验证环境架构及建立方式基于软件模拟的层次式架构40UART验证环境架构41UART验证环境架构41确定验证点testcase提取:procedures激励:从单一功能到复杂功能,辅以覆盖率工具响应:针对具体testcase描述检查相关响应42确定验证点testcase提取:procedures42例:数据发送进程testcase生成

testcase1:验证UART是否能够正确发送数据 a.保持发送时钟基准时钟*8得到的位时钟txtick; b.调用APB_write过程向UART控制寄存器写入“000101010”; c.调用APB_write过程向UART发送保持寄存器thold写入“10101010”; d.调用TXD_verify过程,并检测是否正确接收“10101010”

testcase2:验证UART能否检验出奇偶校验错,并据此发出中断请求 a.保持发送时钟基准时钟*8得到的位时钟txtick; b.调用APB_write过程向UART控制寄存器写入“000101010”; c.调用APB_write过程向UART发送保持寄存器thold写入“10101010”; d.调用TXD_verify过程,并检测是否正确接收“10101010”,偶校验无误,并接收到IRQ信号; e.调用APB_write过程向UART控制寄存器写入“000111010”; f.调用APB_write过程向UART发送保持寄存器thold写入“10101010”; g.调用TXD_verify过程,并检测是否正确接收“10101010”,奇校验无误,并接收到IRQ信号;

testcase3:溢出错误检查 testcase4:发送过程清TE testcase5:流控制检查testcase提取43例:数据发送进程testcase生成testcase提取43testcase实例-接收过程--readRXDprocedurefortestbenchprocedurerxc(signalrxd:instd_logic; d:outstd_logic_vector)isvariablerxdata:std_logic_vector(7downto0);beginwaituntilrxd='0';waitforTXPERIOD/2;foriin0to7loop waitforTXPERIOD; rxdata(i):=rxd;endloop;waitforTXPERIOD;d:=rxdata;end;--endrxctestcase->procedure44testcase实例-接收过程testcase->procetestcase实例-发送过程(续)--transmittd(data)totxdprocedurefortestbenchproceduretxc(signaltxd:outstd_logic; td:integer)isvariabletxdata:std_logic_vector(10downto0);begintxdata:="11"&std_logic_vector(conv_unsigned(td,8))&'0';foriin0to10loop waitforTXPERIOD; txd<=txdata(i);endloop;end;--endtxc45testcase实例-发送过程(续)--transmitttestcase实例-APB写数据过程(续) --readRXDprocedurefortestbenchprocedureapbwr(signalpclk:inbit; signalpaddr:outstd_logic_vector; signalpwdata:outstd_logic_vector; signalpwrite:outstd_logic; signalpsel:outstd_logic; signalpenable:outstd_logic; tadd:instd_logic_vector; twdata:outstd_logic_vector)isbeginwaitonpclk;

ifpclk’eventandpclk=‘0’thenpaddr<=taddr;pwdata<=twdata;pwrite<=‘1’;psel<=‘1’;penable<=‘0’;endif;

waitonpclk;

ifpclk’eventandpclk=‘0’thenpenable<=‘1’;endif;

waitonpclk;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论