10、离散事件驱动语言详解

离散事件驱动语言详解

1. 基本离散事件模拟周期

离散事件计算模型基于模拟事件的生成和随时间处理事件。我们使用一个未来事件队列,这些事件按处理时间排序。语义通过取出队列头部的事件、执行相应操作,并可能将新事件加入队列来定义。当当前时间没有应执行的操作时,时间推进。基本算法如下:

loop
    从队列中取出下一个条目;
    执行函数(例如,对条目中列出的变量进行赋值)
    (这可能包括生成新事件);
until 满足终止条件;

硬件描述语言(HDLs)通常基于离散事件模型。以模拟 RS 锁存器为例,锁存器由两个交叉耦合的或非门组成。假设初始时锁存器被置位,输出 Q 为 ‘1’,R = S = ‘0’。两个或非门的操作由进程 gate1 和 gate2 描述,它们最初处于非活动状态,等待输入 a 或 b 上的事件。

在时间 0 时,若输入 R(复位输入)变为 ‘1’,期望锁存器复位。具体过程如下:
1. 输入 R 的变化作为一个事件存储在未来事件队列中。
2. 由于该事件是队列中唯一的事件,立即被处理,唤醒 gate2。
3. gate2 计算或非函数,结果为 ‘0’,执行赋值 c <= ‘0’,新值先存储在未来事件条目中,实际赋值在处理该条目时生效。
4. 该事件被取出,将输出 c 设置为 ‘0’,唤醒 gate1。
5. gate1 计算或非函数,产生一个请求将其输出 c 设置为 ‘1’ 的事件,存储在队列中。
6. 该事件被处理,设置输出。此变化再次唤醒 gate2,gate2 再次计算输出为 ‘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值