2019年可编程ASIC设计及应用[电子科大]模块化硬件与进程模型 ppt课件

上传人:我*** 文档编号:149055897 上传时间:2020-10-24 格式:PPT 页数:52 大小:293KB
返回 下载 相关 举报
2019年可编程ASIC设计及应用[电子科大]模块化硬件与进程模型 ppt课件_第1页
第1页 / 共52页
2019年可编程ASIC设计及应用[电子科大]模块化硬件与进程模型 ppt课件_第2页
第2页 / 共52页
2019年可编程ASIC设计及应用[电子科大]模块化硬件与进程模型 ppt课件_第3页
第3页 / 共52页
2019年可编程ASIC设计及应用[电子科大]模块化硬件与进程模型 ppt课件_第4页
第4页 / 共52页
2019年可编程ASIC设计及应用[电子科大]模块化硬件与进程模型 ppt课件_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《2019年可编程ASIC设计及应用[电子科大]模块化硬件与进程模型 ppt课件》由会员分享,可在线阅读,更多相关《2019年可编程ASIC设计及应用[电子科大]模块化硬件与进程模型 ppt课件(52页珍藏版)》请在金锄头文库上搜索。

1、电子科技大学,可编程ASIC,模块化硬件与进程模型,目的,第三部分(模块化硬件与进程模型)与第四部分(信号传输模型)均是讲述vhdl硬件描述语言的原理 这两部分的学习目的是为了让大家了解硬件描述语言的运行机制,了解硬件仿真的原理,有利于在以后的设计中使用多语言进行各种级别的建模; 对于打算从事EDA工具软件设计的学员也有一定的参考价值。,电子科技大学,数字电路的信号跳变特点,数字电路,din0,din1,dout,输出(dout)的值只有在输入(din0,din1)发生变化的时候才会变化(可能有所延迟)理想情况下是瞬间变化,没有过渡时间。,din0,din1,dout,电子科技大学,数字电路的

2、信号跳变特点,数字电路,din0,din1,dout,输出(dout)的值只有在输入(din0,din1)发生变化的时候才会变化(可能有所延迟)理想情况下是瞬间变化,没有过渡时间。,din0,din1,dout,电子科技大学,本节假设,为了问题分析的方便,本节暂时假设,输出的跳变与输入的跳变之间无延迟,跳变无过渡。,电子科技大学,用软件方法来仿真硬件行为,数字电路元件,din0,din1,dout,din0,din1,dout,问题:如何用软件的方法来仿真这个硬件元件的行为?,电子科技大学,用软件方法来仿真硬件行为,数字电路元件,din0,din1,dout,din0,din1,dout,Fu

3、nct() if(din0 和 din1满足某种条件) dout = 0; Else dout = 1; / 在这里假设din0,din1和dout为全局量,电子科技大学,用软件方法来仿真硬件行为,数字电路元件,din0,din1,dout,din0,din1,dout,问题:何时调用Funct?,Funct() if(din0 和 din1满足某种条件) dout = 0; Else dout = 1; / 在这里假设din0,din1和dout为全局量,电子科技大学,时间方案(调用方案)1,数字电路元件,din0,din1,dout,din0,din1,dout,t,按照特定的分辨率对时间

4、轴作细划分,调用funct。 继承了传统电子系统(模拟,平滑系统)的仿真思想。 缺点:调用频繁,仿真时cpu负担过重。,电子科技大学,时间方案(调用方案)2,数字电路元件,din0,din1,dout,din0,din1,dout,t,(理想数字系统仿真)只需要对输入跳变点调用Funct。 缺点:只适合于理想数字波形。,电子科技大学,ASIC仿真时间方案,基本上是采用第二种方案。 以下的仿真讨论均使用第二种方案。,电子科技大学,波形记录举例,数字电路,din0,din1,dout,din0,din1,dout,t,t0,t1,t2,电子科技大学,仿真算法流程,读取波形文件中时间st时 的输入值

5、(din0, din1),调用Funct,往波形文件记录St时的 输出值(dout, ),st为仿真时间指针,时间t结束?,St指向波形文件中 的下一个时间点,退出,St指向波形文件中 的起始时间点,Y,N,电子科技大学,考虑复杂的情况:多元件(多模块),u1,u3,u2,a,b,c,e,f,g,VHDL解决方案:一个硬件模块对应一个软件进程。,U1: process(a, b) U2: process(c) U3: process(e, f),电子科技大学,进程调度(方案1),u1,u3,u2,a,b,c,e,f,g,方案1: 偷懒方法。 当任何一个输入(a,b,c)发生变化时,均将所有的进

6、程 调度一次。,问题:用什么来决定调度的顺序?,方案1修补:根据信号流向来确定调度顺序。,问题:当存在信号反馈的时候又如何处理?,电子科技大学,进程调度(方案2),u1,u3,u2,a,b,c,e,f,g,方案2: 对每一个模块,只有当该模块的输入发生变化时,该 模块才被调用。,问题:当模块的输入发生变化,但是又没有引起模块的硬件动作时,这种方法会有什么缺点? 例子:寄存器的时钟发生变化时,寄存器才会产生硬件动作,而数据输入发生变化时,寄存器并不产生任何动作。,电子科技大学,VHDL中process的定义,ModuleName:Process( 敏感信号列表 ) Begin - 进程描述语句。

7、 End process;,当敏感信号列表中的任何一个信号发生变化,该进程都会被调度,电子科技大学,Process例子,假设U2为非门,则例子程序如下: U2: process( c ) Begin if( c = 1 ) then f = 0; else f = 1; end if; End process;,当c发生变化时,该进程被调度.,表示信号赋值。,电子科技大学,VHDL的进程调度,u1,u3,u2,a,b,c,e,f,g,a,b,c,e,f,电子科技大学,VHDL的进程调度,a,b,c,e,f,进入一个新的 仿真周期,U1_process,被调度的进程:,一个 子仿真周期,电子科技

8、大学,VHDL的进程调度,u1,u3,u2,a,b,c,e,f,g,a,b,c,e,f,被调度的进程:,进入一个新的 仿真周期,U1_process,U3_process,子仿真周期1,子仿真周期2,电子科技大学,VHDL的进程调度,u1,u3,u2,a,b,c,e,f,g,a,b,c,e,f,进入一个新的仿真周期,被调度的进程:,U1_process,U2_process,U3_process,电子科技大学,联想:SARS隔离检测,隔离 子周期1,隔离 子周期2,隔离 子周期3,电子科技大学,VHDL进程调度算法,1.如果仿真事件(有信号发生变化)搜索完,则结束仿真;否则,跳到下一个信号事件

9、点,此时进入一个新的仿真周期; 2.找出所有对发生变化的信号敏感的进程,进入一个新的子仿真周期,依次对这些进程调度一次; 3.如果进程调度后出现新的事件,则回到第2步;否则回到第1步。,电子科技大学,VHDL仿真思想,子仿真周期的时间就是一个Delta延时,而Delta延时为0延时。 显然,一个仿真周期可以包含多个子仿真周期,也就是包含多个Delta延时。 Delta延时数目的增加,并不会推进仿真时钟。也即“微观时间增量不改变宏观时间”;只有仿真周期的增加才会推进仿真时钟。 硬件模块的运行之间是并行的关系;软件进程的调度之间是并发的关系。硬件的并行是通过软件的并发来仿真。,电子科技大学,补充:

10、并发与并行,并发:,电子科技大学,补充:并发与并行,并行就是真正的同时,在任何时刻(瞬间),多个进程都在同时地运行。,电子科技大学,VHDL软件体系,硬件电路,逻辑综合器,process(); process(); process(); ,编译 器,进程调度器 (仿真器),仿真结果,VHDL 源代码,EDA工具,综合形成的源码形式网表,电子科技大学,进程结构体(即vhdl源代码)里已经描述了整个硬件的形态,所以它可以被综合器综合成硬件; 并不是所有描述方式的vhdl代码都可以被综合成硬件。太抽象的描述只适合做系统建模和仿真。,电子科技大学,显然综合器是不会去关心敏感信号量的,因为它不存在进程调

11、度的问题,而是直接根据进程体内的代码来形成硬件电路。,电子科技大学,但是要注意,即使编写的是面向综合的代码,敏感信号量仍然需要补全。因为敏感信号的缺漏对于仿真器来说是一个错误,会导致仿真时应该被调度的进程没有得到调度。 而综合器形成的综合后仿真用的网表源文件,是保证不丢失敏感信号的。 如果设计者丢失了敏感信号,就会造成设计级别的代码和综合后的代码之间仿真结果不相符。,电子科技大学,对于敏感信号,一个模块,并非所有的输入都必须作为敏感信号,只有引起硬件动作的信号才必须作为敏感信号。,电子科技大学,对于敏感信号,将所有的输入信号放入进程的敏感信号表中,在逻辑上并没有什么错误,但是会引起进程调度频繁

12、而导致仿真效率降低(cpu负担太重)。,电子科技大学,事情结束了吗?,U1,U2,a,b,c,假设u1和u2都是“直连逻辑”(在数字逻辑设计中,叫做 缓冲器元件),则它们的进程描述(用c语言)如为:,/*敏感信号量 为(a) */ Void functU1() b = a; ,/* 敏感信号量 为(b) */ Void functU2() c = b; ,很显然,当a 的值发生变化 时,会激活两 个仿真子周期, functU1和functU2 依次得到调度, 从而a的值得能够 可靠地传播到c。,用另外的方式建立敏感信号表,这里省略。,电子科技大学,事情结束了吗?,U1,U2,a,b,c,假设u

13、1和u2都是“直连逻辑”(在数字逻辑设计中,叫做 缓冲器元件),则它们的进程描述(用VHDL语言)如为:,Process(a) Begin b = a; End process;,Process(b) Begin c = b; End process;,很显然,当a 的值发生变化 时,会激活两 个仿真子周期, functU1和functU2 依次得到调度, 从而a的值得能够 可靠地传播到c。,电子科技大学,尝试加上时钟变成时序电路,U1,U2,a,b,c,clk,Void functU1() if(rising_edge(clk) b = a; ,C语言描述的进程如下:,Void functU

14、2() if(rising_edge(clk) c = b; ,注意这两个进程 的敏感信号量都 是clk。,电子科技大学,尝试加上时钟变成时序电路,U1,U2,a,b,c,clk,Void functU1() if(rising_edge(clk) b = a; ,C语言描述的进程如下:,Void functU2() if(rising_edge(clk) c = b; ,当clk发生变化时,这两个 进程会被激活,并且依次 在一个子仿真周期内被调 度。,电子科技大学,尝试加上时钟变成时序电路,U1,U2,a,b,c,clk,Void functU1() if(rising_edge(clk)

15、b = a; ,C语言描述的进程如下:,Void functU2() if(rising_edge(clk) c = b; ,如果首先调度functU2,再 调度functU1 ,则仿真结 果能够符合实际的硬件行 为。,电子科技大学,尝试加上时钟变成时序电路,U1,U2,a,b,c,clk,Void functU1() if(rising_edge(clk) b = a; ,C语言描述的进程如下:,Void functU2() if(rising_edge(clk) c = b; ,而如果首先调度functU1, 再调度functU2,则仿真 结果与实际的硬件行为 不符!,电子科技大学,问题,我们发现,调度顺序的不同,会导致截然不同的仿真结果; 以下是这个问题的另外一种形式的表述,电子科技大学,U3,U1,U2,a,b,c,/* 敏感信号量 为(a, b)*/ functU3() b = a; c = b; ,显然,两种 方式中,a的 值都能够可 靠地传输到c。,将u1和u2合并成新的元件u3,并且只用一个进程函数描述,/* 敏感信号量 为(a, b) */ functU3() c

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号