在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2994|回复: 4

数据线的分时复用问题?

[复制链接]
发表于 2004-9-7 20:18:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
数据线AD在第一个CLK时出现的是地址,紧接着第二个CLK出现的是数据,用Vhdl语言怎么实现呢?
波形示意图如下:(呵呵...大概意思吧)
   CLK___/---\___/---\___/---\
   AD -----<adress><data><data>-----
发表于 2004-9-8 17:17:59 | 显示全部楼层

数据线的分时复用问题?

具体做法我不讲了,步骤:1.应加一个地址锁存信号如ADS,在该信号有效时,CLK下降延处地址锁存,并译码。在CLK下面的一个上升延读数据,或在CLK下面的一个下升延写数据。
发表于 2004-9-8 17:52:41 | 显示全部楼层

数据线的分时复用问题?

虽然功能很简单,但养成用状态机来写是个好习惯。
发表于 2004-9-12 22:53:47 | 显示全部楼层

数据线的分时复用问题?

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_unsigned.all;
entity sram is
  port(ncs2,noe,nwe     :in  std_logic;
       fiq                           ut std_logic;
   d                           :inout std_logic_vector(15 downto 0);
   add  );
end sram;
architecture a of sram is
signal address: std_logic_vector(1 downto 0);
begin
address(0) <= add(2);
address(1) <=add(3);
hpi_sync <= '0';
hclk <= '0';
fiq<='1';
process(add, ncs2, noe, nwe) is
type ram_array is array (0 to 2) of std_logic_vector(15 downto 0);
variable mem : ram_array;
begin
d <= (others =>'Z');
if ncs2 = '0' then
if noe = '0' then
d <= mem(to_integer(unsigned(address)));
elsif rising_edge(nwe) then
mem(to_integer(unsigned(address))) := d;
end if;
end if;
end process;
end a;
 楼主| 发表于 2004-9-14 21:52:34 | 显示全部楼层

数据线的分时复用问题?

我考 没看懂!
mem(to_integer(unsigned(address)));
mem(to_integer(unsigned(address))) := d;
发现有的信号类型和一些语法没见过,那个资料上对这些有教详细的说明呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-22 06:32 , Processed in 0.028134 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表