微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 数据线的分时复用问题?

数据线的分时复用问题?

时间:10-02 整理:3721RD 点击:
数据线AD在第一个CLK时出现的是地址,紧接着第二个CLK出现的是数据,用VHDL语言怎么实现呢?
波形示意图如下:(呵呵...大概意思吧)
CLK___/---\___/---\___/---\
AD -----<adress><data><data>-----

数据线的分时复用问题?
具体做法我不讲了,步骤:1.应加一个地址锁存信号如ADS,在该信号有效时,CLK下降延处地址锁存,并译码。在CLK下面的一个上升延读数据,或在CLK下面的一个下升延写数据。

数据线的分时复用问题?
虽然功能很简单,但养成用状态机来写是个好习惯。

数据线的分时复用问题?
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:instd_logic;
fiqut 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;

数据线的分时复用问题?
我考 没看懂!
mem(to_integer(unsigned(address)));
mem(to_integer(unsigned(address))) := d;
发现有的信号类型和一些语法没见过,那个资料上对这些有教详细的说明呢?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top