guruguru123’s diary

かなり雑な作業日記です。

Papilio Pro基板上SDRAMの利用(2)

前回はentuty内部を見たので、今回からarchitecture内部を見ていく。

レコードタイプの定義
 type reg is record
  address : std_logic_vector(ADDRESS_BITS-1 downto 0);
  bank : std_logic_vector( 1 downto 0);
  init_counter : std_logic_vector(14 downto 0);
  rf_counter : integer;
  rf_pending : std_logic;
  rd_pending : std_logic;
  wr_pending : std_logic;
  act_row : std_logic_vector(ADDRESS_BITS-1 downto 0);
  act_ba : std_logic_vector(1 downto 0);
  data_out_low : std_logic_vector(15 downto 0);
  req_addr_q : std_logic_vector(HIGH_BIT downto 2);
  req_data_write: std_logic_vector(31 downto 0);
  req_mask : std_logic_vector(3 downto 0);
  data_out_valid: std_logic;
  dq_masks : std_logic_vector(1 downto 0);
  tristate : std_logic;
 end record;
record命令を用いて関連したデータをひとつにまとめている。そしてすぐ下の
 signal r : reg;
 signal n : reg;
で、このデータタイプを用いた信号宣言をしている。このrとnが何かの頭文字なのか、何を指しているのかはわからない。ADDRESS_BITSやHIGH_BITはgenericで定義したものが使われる。

その下の
 signal rstate : std_logic_vector(8 downto 0);
 signal nstate : std_logic_vector(8 downto 0);
 signal rdata_write : std_logic_vector(15 downto 0);
 signal ndata_write : std_logic_vector(15 downto 0);
は上の二つが状態を表し、下の二つが書き込み信号。

Micron社製64MbitのSDRAM,MT48LC4M16A2のデータシートがあったので、これも読んでいる。