Xin chào, hiện nay mình đang viết về khối giao tiếp SRAM, bạn nào rành cái này cho mình hỏi 1 chút >"<, không biết mình có hiểu sai không nhưng sau khi mô phỏng chân SRAM_DQ lúc nào cũng HiZ, có thể sửa lại code dùm mình thì càng tốt. Thx
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
--------------------------------------------------------------
entity SRAM is
port(
in_address: in std_logic_vector (17 downto 0);
in_data: in std_logic_vector (15 downto 0);
R_W: in std_logic;
CE: in std_logic;
SRAM_ADDR: out std_logic_vector(17 downto 0);
SRAM_CE_N:out std_logic;
SRAM_WE_N:out std_logic;
SRAM_OE_N:out std_logic;
SRAM_UB_N:out std_logic;
SRAM_LB_N:out std_logic;
SRAM_DQ:inout std_logic_vector(15 downto 0);
out_data: out std_logic_vector (15 downto 0));
end SRAM;
--------------------------------------------------------------
architecture behav of SRAM is
begin
SRAM_DQ<=in_data when R_W='1' else (others => 'Z');
out_data <= SRAM_DQ;
SRAM_ADDR <= in_address;
SRAM_WE_N <=(R_W and CE);
SRAM_OE_N <=not (R_W and CE);
SRAM_CE_N <=Not CE;
SRAM_UB_N <= '0';
SRAM_LB_N <= '0';
end behav;
PS: Các chân OE CE UB LB có thể sai, do mình sửa tới sửa lui nhiều lần, mình chỉ thắc mắc sao khi mô phỏng lúc ghi dữ liệu thì in_data không gán được vào SRAM_DQ :'(
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
--------------------------------------------------------------
entity SRAM is
port(
in_address: in std_logic_vector (17 downto 0);
in_data: in std_logic_vector (15 downto 0);
R_W: in std_logic;
CE: in std_logic;
SRAM_ADDR: out std_logic_vector(17 downto 0);
SRAM_CE_N:out std_logic;
SRAM_WE_N:out std_logic;
SRAM_OE_N:out std_logic;
SRAM_UB_N:out std_logic;
SRAM_LB_N:out std_logic;
SRAM_DQ:inout std_logic_vector(15 downto 0);
out_data: out std_logic_vector (15 downto 0));
end SRAM;
--------------------------------------------------------------
architecture behav of SRAM is
begin
SRAM_DQ<=in_data when R_W='1' else (others => 'Z');
out_data <= SRAM_DQ;
SRAM_ADDR <= in_address;
SRAM_WE_N <=(R_W and CE);
SRAM_OE_N <=not (R_W and CE);
SRAM_CE_N <=Not CE;
SRAM_UB_N <= '0';
SRAM_LB_N <= '0';
end behav;
PS: Các chân OE CE UB LB có thể sai, do mình sửa tới sửa lui nhiều lần, mình chỉ thắc mắc sao khi mô phỏng lúc ghi dữ liệu thì in_data không gán được vào SRAM_DQ :'(
Comment