如何用VHDL语言编程基本RS触发器……

如何用VHDL语言编程基本RS触发器……,第1张

根据真值表的描述结合VHDL编程思想很好实现你想要的程序

程序并不难,关键是你用心的程度;

我猜你也许也是一名我的同行……

自己的努力才是过硬的本领!!!!

LIBRARY IEEE

USE IEEE.STD_LOGIC_1164.ALL

USE IEEE.STD_LOGIC_UNSIGNED.ALL

ENTITY RS_clk IS

PORT( S,R,res :IN std_logic

Q,NOT_Q:out std_logic)

END RS_clk

ARCHITECTURE behav OF RS_clk IS

signal sel1,sel2: std_logic

BEGIN

process(res,sel1,sel2)

begin

if res='0' then sel1<='0'

sel2<='1'

elsif (S='1' and R='0') then sel1<='1'

sel2<='0'

elsif (S='0' and R='1') then sel1<='0'

sel2<='1'

elsif (S='0' and R='0') then sel1<=sel1

sel2<=sel2

end if

Q<=sel1

NOT_Q<=sel2

end process

END behav

亲,,你看看这对不对,,我试过了,,没错

LIBRARY IEEE

USE IEEE.STD_LOGIC_1164.ALL

USE IEEE.STD_LOGIC_UNSIGNED.ALL

ENTITY RS_clk IS

PORT( S,R,res :IN std_logic

Q,NOT_Q:out std_logic)

END RS_clk

ARCHITECTURE behav OF RS_clk IS

signal sel1,sel2: std_logic

BEGIN

process(res,sel1,sel2)

begin

if res='0' then sel1<='0'

sel2<='1'

elsif (S='1' and R='0') then sel1<='1'

sel2<='0'

elsif (S='0' and R='1') then sel1<='0'

sel2<='1'

elsif (S='0' and R='0') then sel1<=sel1

sel2<=sel2

end if

Q<=sel1

NOT_Q<=sel2

end process

END behav

RS232是全双工,可以同时收发,RS485是半双工,不能同时收发。它需要两个口线来控制当前通信是收还是发。收发的程序与232串口通信的程序是完全一样的,只要注意在收发前,进行收发状态的转换。

如果你是嵌入式linux开发,你需要为这两个口线写个简单的驱动程序。

如果你是PC机上的linux,你可以用RS232转RS485的接口模块来进行232到485的转换,这样,你的串口程序不需什么任何修改。但要注意,此种模块要利用RS232的流量控制信号来进行收发的转换,所以,它只能插在9线的RS232口中使用,而不能用于3线制的RS232口


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8139974.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存