《CPLD FPGA设计与应用基础教程》课件第九章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《CPLD FPGA设计与应用基础教程》课件第九章.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CPLD FPGA设计与应用基础教程 CPLD FPGA设计与应用基础教程课件第九章 CPLD FPGA 设计 应用 基础教程 课件 第九
- 资源描述:
-
1、第九章第九章 硬件线程硬件线程与接口与接口LOREM IPSUM DOLOR目 录CONCENT9.1 硬件线程的基本概念9.2 硬件线程的连接9.3 硬件线程的同步9.4 实例9.5 异步硬件线程的连接9.6 接口9.7 实例9.1 硬件线程的基本概念GRADUATION THESIS9.1硬件线程的基本概念基本概念基本概念:硬件线程中,变量一般都存储在寄存器和内存中,数据路径只负责数据计算。当数据路径的组合逻辑进行计算时,如移位操作、算术操作等,寄存器和存储器内的变量值将会被取出、更新,然后重新存储。该过程称之为寄存器传输。寄存器传输的顺序由有限状态机控制,因此硬件线程也被称之为具有数据路
2、径的有限状态机。与软件线程的区别:与软件线程的区别:(1)SystemVerilog语言作为一种硬件设计语言,它的每一个always语句块和assign语句都会对应一个具体的硬件线路或者门电路,即硬件线程在整个系统中一直处于活动状态中。(2)在SystemVerilog语言,硬件线程是硬件线程是一类可用于综合的线程,而软件线程只能用于仿真与验证。9.1硬件线程的基本概念9.1.1 数据路径数据路径假设要实现一个64位并行数据在时钟信号的作用下转为串行信号进行传输。系统首先进行复位,串行信号输出高阻态,一旦侦测到一个一位时钟周期的ld_l低脉冲,系统开启数据传输,当传送完毕后,系统返回IDLE状
3、态,并继续等待下一次的ld_l的有效信号的到来。分析该波形图,可以看出,整个波形可以分为两个状态:等待状态和数据传输状态。状态切换通过侦测ld_l的低脉冲时钟和数据传输数量两个事件。9.1硬件线程的基本概念采用两段式状态机进行设计。其状态跳转代码如下:enum logic IDLE=1b0,TRANS=1b1 cs,ns;always_ff(posedge clk,negedge rst_)if(!rst_)cs=IDLE;else cs=ns;always_comb begin unique case(cs)IDLE:ns=!ld_l?TRANS:IDLE;TRANS:ns=(count_t
4、o|!ld_l)?IDLE:TRANS;endcase end9.1硬件线程的基本概念从图可以看出,本例中的数据路径是串并转换的移位逻辑。具体的SystemVerilog代码如下。在时钟有效边沿下,把data_reg的最高位输出,同时把data_reg向右移动一位,最低位补1bz。ser_data=data_reg63;data_reg=data_reg62:0,1bz;9.1硬件线程的基本概念数据路径的功能:数据路径的功能:在有限状态机和外部信号的控制之下,系统会在TRANS状态下,进行计数和数据传输,并会输出响应的状态反馈给有限状态机,从而使得有限状态机能够根据内部状态而采取相应的动作。a
5、ssign shift_en=(cs=TRANS)&ld_l;always_ff(posedge clk,negedge rst_)if(!rst_)begin ser_data=1bz;data_reg=data_in;end else if(shift_en)begin ser_data=data_reg63;data_reg=data_reg62:0,1bz;end else if(count_to|!ld_l)begin ser_data=1bz;data_reg=data_in;end在该代码中,ld_l是外部信号,用来控制数据路径的工作,因此称这些信号为控制信号控制信号。9.1硬件
6、线程的基本概念 当数据路径的组合逻辑计算到某个程度时,会使某些信号有效,从而通知有效状态机判断是否进行状态跳转。这些信号称为状态信号。always_ff(posedge clk,negedge rst_)if(!rst_)begin count=6b0;end else if(shift_en)count+;assign count_to=(count=63);当数据路径进行数据移位时,计数器进行计数,当计数到63时,整个传输完毕,count_to有效,从而通知有限状态机进行状态跳转至IDLE状态。因此状态信号是数据路径中的组合逻辑信号进行运算后得出的结果。数据路径既可以是时序逻辑,如上述示例
7、的移位操作,也可以是组合逻辑,如对数据进行加减乘除等组合运算,或者对收集到的数据进行CRC运算。always_comb unique case(op)AND:result=a&b;OR:result=a|b;BAND:result=&a;BOR:result=|b;endcase9.1硬件线程的基本概念module mem#(DWIDTH=8,DEPTH=256,AWIDTH=$clog2(DEPTH)(input logic AWIDTH-1:0 addr,input logic re,we,clk,inout tri DWIDTH-1:0 data);logic AWIDTH-1:0 mD
8、EPTH;assign data=re?maddr:bz;always(posedge clk)if(we)maddr DEPTH2N-1。9.1硬件线程的基本概念 和有限状态机相似,硬件线程的算法描述不仅包含有限状态机的各种变量,还包含数据路径的变量集合。因此,整个算法描述如下:,;FSMDfX Z SV O P C R 其中,X表示系统的输入数据和控制变量,在上例中,X=ld_l,data_in;Z表示系统的输出数据和状态变量,在上例中,Z=ser_data;S表示有限状态机的状态,在上例中,S=IDLE,TRANS,其中初始状态为IDLE。表示有限状态机的跳变函数:X x S-S。它是输
9、入信号和现态的函数。表示有限状态机的输出函数。它分为Mearly型状态机和Moore型状态。Mearly:X x S-Z;Moore:S-Z;V表示对数据路径进行计算时所使用的数据矢量和数组的变量,如data_reg。O表示数据路径采用的操作符集合,如+,-,,等 P表示采用的协议,通常采用文本描述或者波形描述 C表示驱动时钟 R表示全局复位信号9.1.2硬件线程的算法描述硬件线程的算法描述9.2 硬件线程的连接GRADUATION THESIS9.2 硬件线程的连接 CPLD/FPGA内会存在各种不同的硬件线程。硬件线程之间可以通过某种协议进行连接通信。如图所示。硬件线程1和硬件线程2和3都
10、有连接,硬件线程3和硬件线程4相互连接。硬件线程1产生各种信息,并发给硬件线程2和硬件线程3,因此硬件线程1被称为生产者,而硬件线程2和硬件线程3被称为消费者。同样,对于硬件线程3和4来说,硬件线程3提供信息给硬件线程4,因此硬件线程3是生产者,硬件线程4是消费者。因此,在一个系统中,某个硬件线程既可以是生成者,也可以是消费者。硬件线程连接示意图9.2 硬件线程的连接 以FIFO为例,FIFO是一个先进先出队列,当FIFO为空时,它会发出请求信号给FIFO控制器,FIFO控制器确认该FIFO为空时,就会把写入使能信号WrEn有效,同时驱动data数据线有效。一旦FIFO快满的时候,FIFO将发
11、出快满的状态信号通知FIFO控制器,FIFO控制器不再写入数据。因此,FIFO是一个硬件线程,FIFO控制器为一个硬件线程。其示意图如下。FIFO写数据示意图9.2 硬件线程的连接 具体分析此连接,但Empty有效时,FIFO请求FIFO控制器发送数据,FIFO控制器输出写使能有效,同时传送数据给FIFO,在这一过程中,FIFO控制器产生数据,因此是生产者,而FIFO是请求数据,并接收数据,因此是消费者。同时,FIFO控制器在传送数据的同时,一直在侦测Almost Full状态信号是否有效,也就是说,FIFO接收数据的同时,也会根据自身的容量是否饱和而发出Almost Full信号,因此在这一
12、过程中,FIFO控制器处于被动接收数据的状态,而FIFO处于主动发送信号状态,因此FIFO是生产者,而FIFO控制器为消费者。在CPLD/FPGA中,硬件线程之间通过控制信号进行握手并传递数据和状态的动作,称为协议。协议包括数据传输以及各种控制信号,如本例中的Emtiy和Almost Full等信号。9.3 硬件线程的同步GRADUATION THESIS9.3 硬件线程的同步 当硬件线程进行通信时,线程之间需要知道各自对方的状态信息,并根据对方的状态接收、发送控制命令或者状态信息,传送数据等,因此进程之间需要进行状态同步。通常采用wait状态进行同步。所谓的wait状态,就是当外部输入信号无
13、效时,硬件线程会一直停留在该状态,一旦有效,则跳出该状态,进入下一个状态。在状态跳转图中,一般采用弧形箭头表示。如下图所示。Wait状态示意图9.3 硬件线程的同步 改写状态跳转图改写状态跳转图 线程A在运行过程中,当跳转至状态START时,会把ld_l拉低,同时跳转至REV_DATA状态,等待接收数据。线程B一开始就处于等待状态,如果ld_l没有拉低,则一直等待,当ld_l有效时,线程B跳出等待状态,进入TRANS状态。因此,线程A和B会在ld_l有效的下一个时钟的有效边沿的作用下,同时跳出START和IDLE状态,并同时进入REV_DATA和TRANS状态。这样,线程A和B到达START状
14、态和IDLE状态可能时间不同,但通过ld_l信号可以让线程A和B同时跳出,因此这就叫做状态同步。同步后的两个线程无需外部控制信号进行协助,可以各自独立工作,并且知道对方的工作态度。如线程B在TRANS状态时,会把并行64位数据转换成串行数据,在64个时钟的有限边沿作用下,一一传送出去。而线程A同时处于REV_DATA状态,因此会在同一个时钟边沿接收到来自线程A的数据,并进行处理。A和B之间无需额外的通信。9.3 硬件线程的同步 当两个硬件线程进行连接通信时,可以上图一样单个硬件线程中存在等待,当多个硬件线程同时进行通信时,如在高密度服务器中,节点服务器和RCM中的控制器之间的通信。硬件线程之间
15、的同步示意图9.3 硬件线程的同步 节点服务器需要发送请求信号给RCM控制器并等待来自RCM控制器的应答信号,只有应答信号有效,节点服务器和MCU之间才可以进行通信。整个通信模型如下图所示。当进程A运行到REQ_SEND状态时,发出REQ_N请求信号并等待GNT_N信号的到来,一旦GNT_N信号有效,则跳出该状态,同时进程B运行到GNT_SEND状态时,将等待有效的REQ_N信号,一旦有效,就发出GNT_N的有效信号,同时跳出该状态。硬件进程双边等待状态示意图9.3 硬件线程的同步 尽管进程A和B进入REQ_SEND和GNT_SEND的状态的时间不同,但通过REQ_N和GNT_N两个信号进行同
16、步,它们跳出该状态的时间相同,从而实现了状态同步。如下图所示 一旦两个状态同步,在特定的条件下,后续的状态可以持续同步,这种同步称之为lock-step同步。状态同步示意图9.3 硬件线程的同步 如下图所示,当线程A和线程B从REQ_SEND和GNT_SEND同时跳出时,会同时进入A1和B1状态,因此,当线程A在状态A1时,线程B将处于B1状态,当处于A2状态时,线程B处于B2状态,当处于A3状态时,线程B处于B3状态。线程A和B无需控制信号的交互,就可以知道对方的状态,直到遇到如下情形:线程的某个状态为数据驱动型的循环 线程的某个状态为条件分支语句 或者该线程的某个状态还需要等待其他状态跳转
展开阅读全文