
IDT7035S/L
高速8K ×18双口静态RAM
工业和商业温度范围
共享资源。左处理器然后可反复要求
信号量的状态或删除其为信号量的要求
执行其他任务,偶尔尝试再次获得控制
通过设置和测试序列标记。一旦右侧已放弃
令牌,左侧应在获得控制成功。
信号灯标志是低电平有效。令牌被要求写
一个零到信号锁存和当相同侧写入被释放
一到该锁存器。
八大信号旗在一个单独居住的IDT7035内
从双口RAM的内存空间。这个地址空间被访问
由上放置一个低电平输入
SEM
销(其充当一个片选
信号标志),并利用其它的控制销(地址,
OE ,
和
R / W ),因为它们会进入一个标准的静态RAM的使用。每
该标志具有唯一的地址,可以由任一侧被访问
通过地址引脚
0
A
2
。当访问的信号量,没有
其他地址引脚有任何影响。
当写入信号量,只有数据针D
0
被使用。如果一个低电平
被写入到一个未使用的信号的位置,该标志位将被设置为零
上侧和一个在另一侧(见真值表Ⅴ) 。那
旗语现在只能由侧面示出了零进行修改。当
一个被写入到从同一侧的相同的位置,该标志将
设定为1对于两侧(除非从另一侧的旗语请求
正在等待),然后可以通过双方被写入。的事实,即侧
这是能够写一个零到信号随后锁定了写
从另外一个方面就是使得处理器之间的信号旗有用
通信。 (在使用此功能的详细讨论如下
不久)写入到同一个位置,从另一端的零会
存储在信标请求锁的那一边,直到信号量
由第一侧释放。
当一个信号标记被读取时,将其值传播到所有的数据位,以使
一个标志,该标志是一个读作1中的所有数据位和包含标志
零读为全零。读出的值被锁存到一边?的输出
注册时该侧的信号选择( SEM)和输出使能(OE )
信号变为有效。这是为了从不断变化的禁止信号量
状态在一个读周期的中间,由于从另一侧的写周期。
正因为如此锁存器,一个在测试循环必须重复读取信号的
导致两种信号( SEM或
OE )
变为无效或输出绝不
改变。
序列写/读必须按顺序使用的信号
以保证不会发生系统级的争用。处理器
通过尝试写一个零到请求对共享资源的访问
信号灯位置。如果信号量已经在使用中,信号量
请求锁存器将包含一个零,但信号灯标志显示为一体,
事实上,处理器将核实的后续读取(见真相
表五) 。作为一个例子,假定一个处理器写入一个零到左侧端口
在免费信号的位置。在随后的阅读中,处理器将
验证它已成功地写入到该位置并假设控制
在相关资源。同时,如果在右侧的处理器
试图写入一个零到同一个信号标志会失败,这将是
通过以下事实证实一个人会从该信号被读取的右侧
在随后的读取端。读过序列/写了
代替,系统争用问题可以在发生
在读取和写入周期之间的差距。
要注意的是一个失败的信号请求必须遵循这一点很重要
无论是通过反复读取或写入1到相同的位置。该
之所以这样是很容易通过观察简单的逻辑框图理解
信号灯标志图4.两个信标请求锁存进
成信号标志。取锁存器是第一到呈现零到
信号灯标志将强制信号旗侧低,其他
侧高。这种情况将继续下去,直到一个被写入到相同的
信标请求锁存器。如若对方?的信标请求锁
已被写入一个零在此期间,信号旗将翻转
至另一侧,一旦一个被写入所述第一侧?的请求
锁存器。第二面?的标志,现在将保持在低水平,直到它的信标请求
锁存器写入一个1 。从这个很容易理解,如果一个信号
请求以及请求的处理器不再需要
资源,整个系统可以挂机,直到1被写入到该
信标请求锁存器。
的信号时序的情况下,关键是当双方要求
通过尝试在同一时间写入一个零到它单个令牌。该
信号的逻辑是专门设计来解决此问题。如果simulta-
由neous请求,则逻辑可以保证只有一侧接收
令牌。如果一方是早于其他在提出要求时,所述第一
侧,使该请求将接收到的令牌。如果两个请求到达
同时,分配将任意一个端口或制成
等。
应该使用信号量时,要注意的一个警告是,
信号量本身并不能保证对资源的访问是安全的。
与任何强大的编程技术,如果信号灯被滥用
或曲解,软件错误可以很容易地发生。
信号量的初始化是不是自动的,必须办理
通过在上电时初始化程序。由于任何信号的要求
标志,它包含一个零必须复位到一个,两个都信号灯
双方应该有一个双方写进他们的初始化
以确保在需要时它们是免费的。
或许信号量的最简单的应用是它们用于如
资源标记为IDT7035 ?的双口RAM 。说的8K ×18的RAM
物被分成两个4K ×18块,分别在要专用
任一时刻到维修左或右端口。信号量能0
被用于指示该侧将控制的下段
存储器,以及信号量1可以定义为用于上的指示器
的存储器部分。
取的资源,在本实施例的双端口RAM中的低4K,
左侧端口上的处理器可以写,然后读一个零
信号量为0。如果这个任务成功完成(零读取
背部而不是一个) ,左处理器将承担控制
的下4K 。与此同时合适的处理器正试图获得
左处理器之后的资源的控制,这将读回一个
响应于零,它已试图写入到信号量0。在此
点,该软件可以选择尝试,并获得了第二4K控制
通过写,然后读一个零到信号灯1.如果成功节
在获得控制,这将锁定的左侧。
一旦左侧与它的任务完成了,就写了一个
信号0,然后尝试获得信号量1。如果
信号1仍然由右侧占据,左侧可撤消
其信号请求,并执行其他任务,直到它能够写,然后
读一个零到信号量1.如果右处理器执行类似的任务
与信号量为0,该协议将允许两个处理器交换
双口RAM 4K块彼此。
使用信号量??一些例子
17
6.42