![可编程ASIC设计及应用 [李广军]信号传输模型_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-2/12/8b544ed2-75b9-4426-bd26-96bf506fe638/8b544ed2-75b9-4426-bd26-96bf506fe6381.gif)
![可编程ASIC设计及应用 [李广军]信号传输模型_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-2/12/8b544ed2-75b9-4426-bd26-96bf506fe638/8b544ed2-75b9-4426-bd26-96bf506fe6382.gif)
![可编程ASIC设计及应用 [李广军]信号传输模型_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-2/12/8b544ed2-75b9-4426-bd26-96bf506fe638/8b544ed2-75b9-4426-bd26-96bf506fe6383.gif)
![可编程ASIC设计及应用 [李广军]信号传输模型_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-2/12/8b544ed2-75b9-4426-bd26-96bf506fe638/8b544ed2-75b9-4426-bd26-96bf506fe6384.gif)
![可编程ASIC设计及应用 [李广军]信号传输模型_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-2/12/8b544ed2-75b9-4426-bd26-96bf506fe638/8b544ed2-75b9-4426-bd26-96bf506fe6385.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子科技大学可编程ASIC信号传输模型电子科技大学回顾上一节课,发生了什么U1U2abcclk/* 敏感信号为(clk) */FunctU3() if( ( clklast = 0 ) & ( clk = 1 ) ) b = a; c = b; 此时仿真出错,与实际不符!交换顺序!电子科技大学解决方案一 可以规定设计者严格按照 c = b; b = a;的顺序,即“从后级到前级”的顺序描述寄存器队列。U1U2abcclk电子科技大学但是 设计者在实际设计当中如何时刻注意寄存器的先后级顺序? 特别是设计者如何去描述如下图所示的循环移位寄存器?U1U2abcclkPreset解决方案分析(
2、1)U1U2abcclkVoid functU1() if(rising_edge(clk) b = a;Void functU2() if(rising_edge(clk) c = b;想想如何解决调想想如何解决调度顺序的问度顺序的问题题解决方案分析(1)U1U2abcclkVoid functU1() if(rising_edge(clk) b = a;Void functU2() if(rising_edge(clk) c = b;一种好的硬件描一种好的硬件描述语言,或者一述语言,或者一种好的硬件建模种好的硬件建模方法,应该允许方法,应该允许设计者用设计者用任何顺任何顺序序描述或者调度描
3、述或者调度各个模块的进程。各个模块的进程。解决方案分析(2)U1U2abcclkVoid functU1() if(rising_edge(clk) b = a;Void functU2() if(rising_edge(clk) c = b;进程调度是串行进程调度是串行的,而硬件运行的,而硬件运行是并行的。从软是并行的。从软件的角度上看,件的角度上看,进程内的信号传进程内的信号传输不能输不能“过快过快”,以至于过早地传以至于过早地传输到目的地。输到目的地。解决方案分析(3)U1U2abcclkVoid functU1() if(rising_edge(clk) b = a;Void func
4、tU2() if(rising_edge(clk) c = b;出现上述问题的出现上述问题的根本原因在于,根本原因在于,我们还没有考虑我们还没有考虑到信号传输中的到信号传输中的延时延时解决方案分析(4)U1U2abcclkVoid functU1() if(rising_edge(clk) b = a;Void functU2() if(rising_edge(clk) c = b;电子科技大学 假设信号从a直接传输到c,中间经过b。 当a处的电信号往b传输的同时,b处的信号也在往c传输。 即使假定传输延时为0(很理想的情况),但是任意时刻(或者说任意瞬间),c所获得的信号绝对不是此时b所获得
5、的信号,更不会是a的信号(虽然它们的值有可能是完全相同的)。信号传输的延时abc解决方案分析(4)U1U2abcclkVoid functU1() if(rising_edge(clk) b = a;Void functU2() if(rising_edge(clk) c = b;假设先调度假设先调度functU1再调再调度度functU2。functU1调度调度完毕后,完毕后,a的的新值不能立新值不能立即传输到即传输到b。必须等到必须等到functU2被调被调度之后。度之后。解决方案分析(4)U1U2abcclkVoid functU1() if(rising_edge(clk) b = a
6、;Void functU2() if(rising_edge(clk) c = b;假设先调度假设先调度functU2再调再调度度functU1。分析仍然同分析仍然同前。前。VHDL解决方案U1U2abcclkU1:Process(clk)begin if(rising_edge(clk) b = a; end if;End process;U2:Process(clk)begin if(rising_edge(clk) c = b; end if;End process;Vhdl在信号在信号赋值问题上,赋值问题上,引入了一个引入了一个延时的概念。延时的概念。VHDL解决方案-Delta延时U
7、1U2abcclkU1:Process(clk)begin if(rising_edge(clk) b = a; end if;End process;U2:Process(clk)begin if(rising_edge(clk) c = b; end if;End process;很容易发现,很容易发现,信号赋值的延信号赋值的延时,正好应该时,正好应该等于前面所说等于前面所说的一个的一个子仿真子仿真周期周期的时间的时间-Delta延时延时。电子科技大学必须等于Delta延时 信号赋值延时,不能少于信号赋值延时,不能少于Delta延时,这延时,这是前面所说的调度顺序问题能得到有效是前面所说的
8、调度顺序问题能得到有效解决的保证;解决的保证; 此外,信号赋值的延时,不可能大于一此外,信号赋值的延时,不可能大于一个个Delta延时延时(即子仿真周期的时间即子仿真周期的时间),因,因为延时时间到达,目标信号点发生有效为延时时间到达,目标信号点发生有效更新后,才可能激活下一个子仿真周期。更新后,才可能激活下一个子仿真周期。电子科技大学考虑模块合并的情况 Process( clk ) Begin if( clkevent and clk = 1 ) then b = a; c = b; end if; End process;这个进程的行为必须这个进程的行为必须跟前面所说的双进程的跟前面所说的
9、双进程的行为一样。行为一样。abc001101tlastpresentU1U2abcclk电子科技大学考虑模块合并的情况 Process( clk ) Begin if( clkevent and clk = 1 ) then b = a; c = b; end if; End process;当仿真程序执行这条当仿真程序执行这条语句之后,语句之后,a的新的值的新的值并不会立即到达并不会立即到达b。abc001101tlastpresentU1U2abcclk电子科技大学考虑模块合并的情况 Process( clk ) Begin if( clkevent and clk = 1 ) then
10、 b = a; c = b; end if; End process;同样执行这条语句后,同样执行这条语句后,b的值也不会立即传的值也不会立即传输到达输到达c。abc001101tlastpresentU1U2abcclk电子科技大学考虑模块合并的情况 Process( clk ) Begin if( clkevent and clk = 1 ) then b = a; c = b; end if; End process;abc001101tlastpresentU1U2abcclk电子科技大学考虑模块合并的情况 Process( clk ) Begin if( clkevent and c
11、lk = 1 ) then b = a; c = b; end if; End process;abc001101tlastpresent10U1U2abcclk电子科技大学假如给时序进程添加冗余敏感信号 Process( b, clk ) Begin if( clkevent and clk = 1 ) then b = a; c = b; end if; End process;必须保证必须保证process不能因不能因为为b的改变而得到调度。的改变而得到调度。可见,时钟沿条件判断的可见,时钟沿条件判断的值只在值只在第一个第一个子仿真周期子仿真周期为真。为真。电子科技大学回头看看组合电路进
12、程的情况 Process( a, b ) Begin b = a; c = b; End process;再次强调再次强调:当当a发生发生变化时,该进程将变化时,该进程将被调度两次,即被调度两次,即a的变化激活了两个的变化激活了两个子仿真周期。这样子仿真周期。这样保证了保证了a的值能顺的值能顺利传播到利传播到c。abc行为仿真行为仿真电子科技大学回头看看组合电路进程的情况 Process( a, b ) Begin b = a; c = b; End process;再次强调再次强调:当当a发生发生变化时,该进程将变化时,该进程将被调度两次,即被调度两次,即a的变化激活了两个的变化激活了两个子
13、仿真周期。这样子仿真周期。这样保证了保证了a的值能顺的值能顺利传播到利传播到c。abc时序仿真时序仿真电子科技大学假设敏感信号量遗漏 Process( a ) Begin b = a; c = b; End process;abc行为仿真行为仿真电子科技大学假设敏感信号量遗漏 Process( a ) Begin b = a; c = b; End process;abc行为仿真行为仿真电子科技大学假设敏感信号量遗漏 Process( a ) Begin b = a; c = b; End process;A发生一次,该发生一次,该process只被调度只被调度一次,造成行为仿一次,造成行为仿
14、真结果错误。真结果错误。abc行为仿真行为仿真而时序仿真仍然是而时序仿真仍然是正确的正确的(上节课分析过上节课分析过)电子科技大学关于组合进程的结论 Process( a, b ) Begin b = a; c = b; End process;组合电路进程中,所有组合电路进程中,所有被读取的信号,都应该被读取的信号,都应该放到敏感信号列表中。放到敏感信号列表中。当输入发生变化时,组当输入发生变化时,组合进程有可能连续多次合进程有可能连续多次被调度。被调度。电子科技大学关于信号赋值完成(到达)时间的说法 说法说法1:大部分资料上说的是,:大部分资料上说的是,信号赋值是在信号赋值是在进程退出时完
15、成进程退出时完成(到达到达)。 说法说法2:而部分资料说的是,:而部分资料说的是,信号赋值是在当信号赋值是在当前的前的子仿真周期子仿真周期结束时完成结束时完成(到达到达)。 分析:说法分析:说法1是从硬件的角度来看问题,其依是从硬件的角度来看问题,其依据的前提是,据的前提是,进程是并行执行的;进程是并行执行的; 而说法而说法2是从底层的软件仿真来看问题,其依是从底层的软件仿真来看问题,其依据的前提是,据的前提是,进程是串行调度进程是串行调度(“并发并发”的本的本质质)的。的。电子科技大学从现在开始 课程开始进入设计阶段。这意味着,学习时,课程开始进入设计阶段。这意味着,学习时,思维方法应该从软
16、件模型转向硬件模型。思维方法应该从软件模型转向硬件模型。 以后的说法,大部分是基于第一种假设以后的说法,大部分是基于第一种假设(进程进程并行并行)。也就是,你可以并且应该使用纯粹的。也就是,你可以并且应该使用纯粹的硬件思维硬件思维来进行代码分析和代码设计。来进行代码分析和代码设计。 但是你应该时刻注意使用底层的软件仿真思维,但是你应该时刻注意使用底层的软件仿真思维,来思考来思考vhdl语法背后的运行机制,这不仅可以语法背后的运行机制,这不仅可以很好地理解很好地理解HDL,而且有助于你纯熟地使用任而且有助于你纯熟地使用任何一门语言,或者使用多语言配合来进行系统何一门语言,或者使用多语言配合来进行
17、系统建模建模/仿真,特别是软件和硬件的协同建模仿真,特别是软件和硬件的协同建模/仿仿真。真。电子科技大学例如 我们认为前面例子中,任时刻被同时激我们认为前面例子中,任时刻被同时激活的进程之间是并行活的进程之间是并行(严格地说是严格地说是“并并发发”)执行的。执行的。 那么思考:如何用那么思考:如何用c语言来实现前面所说语言来实现前面所说的时序进程和组合进程,以及这些进程的时序进程和组合进程,以及这些进程的调度?的调度? C语言实现时,如何处理信号赋值的语言实现时,如何处理信号赋值的Delta延时延时?电子科技大学进程内的信号赋值:顺序执行,并行赋值 例1 : Process Begin a =
18、 1; a = 0; End process;这两个赋值实际上是这两个赋值实际上是“并行并行”(也可以说也可以说“并并发发”)的。的。但是由于但是由于process内语句内语句运行的顺序性,后者将运行的顺序性,后者将比前者比前者“晚晚”到达一个到达一个很微小的时间。很微小的时间。结果:结果:a = 0。电子科技大学进程内的信号赋值:顺序执行,并行赋值 例例1 : Process Begin a = 1; a = 0; End process;在实际设计中,应该尽在实际设计中,应该尽量避免出现这种对信号量避免出现这种对信号多次赋值覆盖;多次赋值覆盖;这意味着,尽量不要使这意味着,尽量不要使用书上
19、的在用书上的在process内部内部进行信号进行信号初始化初始化的方法的方法(后面将详细讲述后面将详细讲述)。结果:结果:a = 0。电子科技大学进程内的信号赋值:顺序执行,并行赋值 例例2 : Process(a,b,c,d) Begin d = a; x = c XOR d; d = b; y = c XOR d; End process;结果:结果:x = b XOR c; y = b XOR c;电子科技大学VHDL中的变量 与与c语言的变量一样,赋值是立即有效的。语言的变量一样,赋值是立即有效的。 Process( a, b, c ) 注意注意d为变量为变量(用用variable声明
20、声明) Begin d := a; x = c XOR d; d := b; y = c XOR d; End prcoess;结果:结果:x = a XOR c;y = b XOR c;电子科技大学VHDL中的对象 信号信号: 全局量全局量(进程之外定义进程之外定义),代表硬件,代表硬件连线,赋值有连线,赋值有 Delta延时延时 变量:局部量变量:局部量(只在进程内可见只在进程内可见),不代表,不代表硬件连线,只代表一个硬件连线,只代表一个“值值”或者或者“运运算结果算结果”,赋值为立即有效。,赋值为立即有效。 常数:全局量。直接与高电平或者地电常数:全局量。直接与高电平或者地电平相连接。
21、平相连接。 具体可参考教材具体可参考教材(第一版第一版)中中p.78的总结。的总结。电子科技大学设计中要注意 变量是变量是VHDL为仿真而专门引入的概念,为仿真而专门引入的概念,实际上因为它不具备硬件特性,因此在实际上因为它不具备硬件特性,因此在RTL设计中要尽量避免使用。设计中要尽量避免使用。 而在使用而在使用VHDL高层建模或者仿真时,高层建模或者仿真时,可以适当使用变量。可以适当使用变量。电子科技大学数据类型 VHDL的对象所能使用的数据类型有:的对象所能使用的数据类型有: 位,位矢量;位,位矢量; 整数,自然数,实数;整数,自然数,实数; 布尔量;布尔量; 时间;时间; 字符,字符串;
22、字符,字符串; 错误等级。错误等级。直接地描述硬件的直接地描述硬件的结构,可以直接被结构,可以直接被硬件综合。硬件综合。电子科技大学数据类型 VHDL的对象所能使用的数据类型有:的对象所能使用的数据类型有: 位,位矢量;位,位矢量; 整数,自然数,实数;整数,自然数,实数; 布尔量;布尔量; 时间;时间; 字符,字符串;字符,字符串; 错误等级。错误等级。其可综合性根据综其可综合性根据综合器的综合能力不合器的综合能力不同而不同。同而不同。电子科技大学数据类型 VHDL的对象所能使用的数据类型有:的对象所能使用的数据类型有: 位,位矢量;位,位矢量; 整数,自然数,实数;整数,自然数,实数; 布
23、尔量;布尔量; 时间;时间; 字符,字符串;字符,字符串; 错误等级。错误等级。纯粹用于仿真,不纯粹用于仿真,不可综合。可综合。电子科技大学整型的注意事项 使用整型时,应该指定数据的取值范围。使用整型时,应该指定数据的取值范围。 因为这样可以指导综合器使用多少数据因为这样可以指导综合器使用多少数据线来实现它线来实现它 如果不指定,则综合器会考虑最坏的情如果不指定,则综合器会考虑最坏的情况,使用况,使用32bit来实现。来实现。电子科技大学信号的特性本门课涉及的内容:本门课涉及的内容:驱动能力;驱动能力;取值状态;取值状态;传输延时;传输延时;功耗。功耗。电子科技大学驱动能力输 出 1的 模 块
24、+ 3.3V高 电 平 输 出 阻 抗负 载 阻 抗输出0的模块低电平输出阻抗负载阻抗+3.3V电子科技大学高阻态Z与总线复用输 出 0的 模 块+3.3V输 出 1的 模 块+3.3V高 电 平 输 出 阻 抗负 载 阻 抗低 电 平 输 出 阻 抗错误电路:错误电路:在在VHDL中,中,这这 种情况叫做种情况叫做 多驱动。多驱动。思考:会造成思考:会造成什么什么 后果?后果?电子科技大学输出0的模块输出z的模块+3.3V负载阻抗+3.3V低电平输出阻抗高阻态Z与总线复用 一般情况下,几路一般情况下,几路 输出同时驱动一路输出同时驱动一路 负载时,只允许一负载时,只允许一 路有逻辑电平路有逻
25、辑电平1或或0 输出,其他路必须输出,其他路必须 输出高阻输出高阻z. 思考:哪种电路思考:哪种电路 可以实现线与?可以实现线与?电子科技大学因此对于STD_LOGIC型 其取值有: “U”U”初始值初始值 “X”X”不定不定 “0”“0”0 0 “1”“1”1 1 “Z”Z”高阻高阻 “W”W”弱信号不定弱信号不定 “L”L”弱信号弱信号0 0 “H”H”弱信号弱信号1 1 “-”“-”不可能情况不可能情况电子科技大学实际信号传输延时的硬件机制由晶体管的开关时间、晶体管特性电阻由晶体管的开关时间、晶体管特性电阻和特性电容、线路分布电阻和分布电容引和特性电容、线路分布电阻和分布电容引起。起。具
26、体内容可以参考数字逻辑设计的教材。具体内容可以参考数字逻辑设计的教材。电子科技大学实际信号传输延时的VHDL描述 分两种:传输延时与惯性延时。分两种:传输延时与惯性延时。 传输延时:传输延时: b = transport a after 20 ns; 惯性延时:惯性延时: b = a after 20 ns;电子科技大学传输延时 b = TRANSPORT a AFTER 20 nsb = TRANSPORT a AFTER 20 ns; 电子科技大学惯性延时 b = a AFTER 20 nsb = a AFTER 20 ns;电子科技大学功耗 与分布电容、逻辑电平门限、工作速率与分布电容、
27、逻辑电平门限、工作速率等决定。以后将具体讲述这部分的内容。等决定。以后将具体讲述这部分的内容。电子科技大学思考 现在你可以知道为什么在上一次的作业现在你可以知道为什么在上一次的作业题里,要求题里,要求std_logic的定义中,枚举值的定义中,枚举值为字符型,而不是整型为字符型,而不是整型电子科技大学小结 前面以前面以“模块化硬件与进程模型模块化硬件与进程模型”与与“信号传输模型信号传输模型”来讲述了数字系统的来讲述了数字系统的软件仿真算法。软件仿真算法。 学习目的:理解硬件描述语言的原理;学习目的:理解硬件描述语言的原理;了解数字系统的建模和仿真中要注意的了解数字系统的建模和仿真中要注意的问
28、题。问题。电子科技大学小结 算法要点:算法要点: 系统敏感的输入信号产生变化,将激活一个仿真周系统敏感的输入信号产生变化,将激活一个仿真周期;仿真过程中,信号变化期;仿真过程中,信号变化(包括进程调度导致的新包括进程调度导致的新的信号变化的信号变化)都会激活一个新的子仿真周期。都会激活一个新的子仿真周期。 仿真周期里可能包含多个子仿真周期;仿真周期里可能包含多个子仿真周期; 一个子仿真周期所耗费的硬件时间为一个一个子仿真周期所耗费的硬件时间为一个Delta延时,延时,理想情况下,理想情况下,Delta延时为延时为0; 子仿真周期子仿真周期(Delta延时延时)的增加,不会推进仿真时钟的增加,不会推进仿真时钟(即不会增加硬件时间即不会增加硬件时间); 一个子仿真周期内可能有多个进程被调度。一个子仿真周期内可能有多个进程被调度。电子科技大学小结 算法要点算法要点(接上一页接上一页) 导致硬件动作产生的信号才必须作为进程的敏感信导致硬件动作产生的信号才必须作为进程的敏感信号;号; 组合进程中,所有被读取的信号组合进程中,所有被读取的信号(包括中间信号包括中间信号)都都应该放到敏感信号表中;而时序进程则不一定;应该放到敏感信号表中;而时序进程则不一定; 信号赋值应该带有延时,该延时正好等于一个信号赋值应该带有延时,该延时正好等于一个Delta延时;延时; 信号的数据类型及
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 正常分娩的看法与护理
- 2024年园艺师高频考点试题及答案
- 仓库租赁协议书范例
- 二零二五版出租房退房的协议书
- 标准二手房买卖合同范例贷款类
- 拍卖协议合同范例
- 二零二五版工伤赔偿免责协议书范例
- 知识产权培训课件图文
- 二零二五版贷款居间合同范文
- 眉毛保养知识培训课件
- 公厕保洁服务服务承诺及质量保障措施
- 《火力发电建设工程机组调试技术规范》
- 深度强化学习理论及其应用综述
- 河北青县村村合并方案
- 国家职业技术技能标准 6-29-02-06 凿岩工(试行) 2024年版
- 《宫颈癌的健康教育》课件
- 城镇燃气安全管理培训课件
- 园区能源管理系统建设方案合集
- 《创新思维方法》课件
- 电动起重机司机装卸司机
- 疤痕妊娠的护理查房
评论
0/150
提交评论