цсноп 2 11_3_проект памяти

885 views

Published on

Published in: Education
  • Be the first to comment

  • Be the first to like this

цсноп 2 11_3_проект памяти

  1. 1. Проектирование памяти на FPGA Проектирования систем на основе программируемой логики д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ13.02.2011 e-mail: hahanova@mail.ru,
  2. 2. Цель лекции и содержание Цель: Изучить предлагаемые в FPGA ресурсы для проектирования памяти, научиться из использованию. План13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  3. 3. Структурная схема FPGA I/O Block Configurable Logic Block Interconnect Aria13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  4. 4. Конфигурируемый логический блок (CLB) микросхемы серии Spartan 3E13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  5. 5. Ресурсы памяти на FPGAтриггеры(регистровая память),таблицы LUT из конфигурируемых блоков CLB,выделенные блоки памяти.13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  6. 6. Конфигурация памяти SelectRAM RAM Число LUT 16 x 1S 1 16 x 1D 2 32 x 1S 2 32 x 1D 4 64 x 1S 4 64 x 1D 8 128 x 1S 8 S - однопортовая память D - двухпортовая память13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  7. 7. Распределенная память SelectRAM (RAM16x1S)13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  8. 8. Однопортовая распределенная память SelectRAM(RAM32x1S)13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  9. 9. Двухпортовая распределенная память SelectRAM (RAM16x1D)13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  10. 10. Схема сектора из левой колонки CLB13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  11. 11. Режим двухпортовой памяти13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  12. 12. Block RAM Пути данных 1. Write to and read from Port A 2. Write to and read from Port B 3. Data transfer from Количество блоков в микросхемах Port A to Port B 4. Data transfer from Port B to Port A13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  13. 13. Режим сдвигового регистра13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  14. 14. Модель сдвигового регистраlibrary IEEE;use IEEE.STD_LOGIC_1164.all;use IEEE.STD_LOGIC_unsigned.all; entity SRL16_mine is port (Q : out STD_LOGIC; A0 : in STD_LOGIC; A1 : in STD_LOGIC; A2 : in STD_LOGIC; A3 : in STD_LOGIC; CLK : in STD_LOGIC; D : in STD_LOGIC); end entity; architecture Behavioral of SRL16_mine is signal Q_INT: std_logic_vector(15 downto 0); begin process(Clk) begin if (Clkevent and Clk=1) then Q_INT <= Q_INT(14 downto 0) & D; end if; end process; Q <= Q_INT(conv_integer(A3&A2&A1&A0)); end Behavioral;13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  15. 15. Выделенные блоки памяти RAMB4_S#_S# WEA ENA RSTA DOA[#:0] CLKA ADD[#:0] DIA[#:0] WEB ENB RSTB DOB[#:0] CLKB ADD[#:0] DIB[#:0] Width Depth ADDR Bus Data Bus 1 4096 A DDR<11:0> DATA<0> 2 2048 ADDR<10:0> DATA<1:0> 4 1024 A DDR<9:0> DATA<3:0> 8 512 A DDR<8:0> DATA<7:0> 16 256 A DDR<7:0> DATA<15:0>13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  16. 16. Карта памяти RAMB13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  17. 17. Временные диаграммы для однопортового режима выделенных блоков памяти Block RAM13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  18. 18. Временные диаграммы для двухпортового режима выделенных блоков памяти Block RAM13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  19. 19. BRAM16 Двухпортовая Однопортовая Описание конфигураций портов13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  20. 20. Организация данных при различных конфигурациях размеров портов А и В.13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  21. 21. Модель памяти с асинхронным чтением library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity ram_test is port (d: in std_logic_vector(7 downto 0); a: in std_logic_vector(6 downto 0); we: in std_logic; — вход разрешения записи clk: in std_logic; q: out std_logic_vector(7 downto 0)); end ram_test; architecture rtl of ram_test is type mem_type is array (127 downto 0) of std_logic_vector (7 downto 0); signal mem: mem_type; begin process (clk) begin if rising_edge(clk) then if (we = ‘1’) then mem(conv_integer(a))<= d; end if; end if; end process; q <= mem(conv_integer (a)); end rtl;13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  22. 22. Модель памяти с синхронным чтениемlibrary ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity raminfr is port (clk , we : in std_logic; a, di : in std_logic_vector(3 downto 0); do : out std_logic_vector(3 downto 0)); end raminfr; architecture syn of raminfr is type ram_type is array (31 downto 0) of std_logic_vector (3 downto 0); signal RAM : ram_type; signal read_a : std_logic_vector(4 downto 0); begin process (clk) begin if (clk’event and clk = ‘1’) then if (we = ‘1’) then RAM(conv_integer(a)) <= di; end if; read_a <= a; end if; end process; do <= RAM(conv_integer(read_a)); end syn;13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  23. 23. Реализация памяти с синхр. чтением13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  24. 24. Модель памяти с псевдо-синхронным чтением library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity raminfr is port (clk : in std_logic; we : in std_logic; a : in std_logic_vector(4 downto 0); di : in std_logic_vector(3 downto 0); do : out std_logic_vector(3 downto 0)); end raminfr; architecture syn of raminfr is type ram_type is array (31 downto 0) of std_logic_vector (3 downto 0); signal RAM : ram_type; begin process (clk) begin if (clk’event and clk = ‘1’) then if (we = ‘1’) then RAM(conv_integer(a)) <= di; end if; do <= RAM(conv_integer(a)); end process; end syn;13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  25. 25. Двухпортовая память с асинхр. чтением library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity raminfr is port (clk : in std_logic; we : in std_logic; a : in std_logic_vector(4 downto 0); dpra : in std_logic_vector(4 downto 0); di : in std_logic_vector(3 downto 0); spo : out std_logic_vector(3 downto 0); dpo : out std_logic_vector(3 downto 0)); end raminfr; architecture syn of raminfr is type ram_type is array (31 downto 0) of std_logic_vector (3 downto 0); signal RAM : ram_type; begin process (clk) begin if (clk’event and clk = ‘1’) then if (we = ‘1’) then RAM(conv_integer(a)) <= di; end if; end if; end process; spo <= RAM(conv_integer(a)); dpo <= RAM(conv_integer(dpra)); end syn;13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  26. 26. Двухпортовая память с синхронным чтением.1-- dual - port RAM with synchronous read Примечание.library ieee; Результат синтеза зависит от размера памяти. Памятьuse ieee.std_logic_1164.all; небольшого размераuse ieee.std_logic_unsigned.all; реализуется какentity xilinx_dual_port_ram_sync is распределеннаяgeneric ( ADDR_WIDTH : integer:=6; DATA_WIDTH : integer:=8);port ( clk, we: in std_logic; addr_a: in std_logic_vector(ADDR_WIDTH -1 downto 0); addr_b: in std_logic_vector(ADDR_WIDTH-1 downto 0); din_a: in std_logic_vector(DATA_WIDTH-1 downto 0); dout_a: out std_logic_vector(DATA_WIDTH-1 downto 0); dout_b : out std_logic_vector(DATA_WIDTH-1 downto 0));end xilinx_dual_port_ram_sync;13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  27. 27. Двухпортовая память с синхронным чтением.2architecture beh_arch of xilinx_dual_port_ram_sync is type ram_type is array (0 to 2**ADDR_WIDTH-1) of std_logic_vector(DATA_WIDTH- 1 downto 0); signal ram: ram_type; signal addr_a_reg, addr_b_reg : std_logic_vector(ADDR_WIDTH-1 downto 0);begin process (clk) begin if (clkevent and clk = 1) then if (we = 1) then ram(conv_integer(addr_a)) <= din_a; end if; addr_a_reg <= addr_a; addr_b_reg <= addr_b; end if; end process; dout_a <= ram(conv_integer(addr_a_reg)); dout_b <= ram(conv_integer(addr_b_reg));end beh_arch;13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  28. 28. Атрибуты программы XST для работы синтеза памяти RAM_EXTRACT и RAM_STYLERAM_EXTRACT – константа для синтеза, разрешает или запрещает извлечение памяти, может принимать значение YES и NO, по умолчанию имеет значение YES.--Декларация атрибута attribute ram_extract: string; --Описание атрибута attribute ram_extract of {signal_name|entity_name}:{signal|entity} is "yes";RAM_STYLE – константы синтеза, управляющая выбором ресурсов для генерации памяти. Допустиные значения: AUTO, BLOCK и DISTRIBUTED; по умолчанию AUTO.--Декларация атрибута attribute ram_style: string; --Описание атрибута attribute ram_style of {signal_name|entity_name}:{signal|entity} is {auto|block|distributed}";13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru
  29. 29. Создание ПЗУlibrary IEEE; use IEEE.std_logic_1164.all;entity rom_rtl is port ( ADDR : in INTEGER range 0 to 15; DATA : out STD_LOGIC_VECTOR (3 downto 0) );end rom_rtl;architecture XILINX of rom_rtl is subtype ROM_WORD is STD_LOGIC_VECTOR (3 downto 0); type ROM_TABLE is array (0 to 15) of ROM_WORD; constant ROM : ROM_TABLE := ROM_TABLE( ROM_WORD("0000"), ROM_WORD("0001"), ROM_WORD("0010"), ROM_WORD("0100"), ROM_WORD("1000"), ROM_WORD("1100"), ROM_WORD("1010"), ROM_WORD("1001"), ROM_WORD("1001"), ROM_WORD("1010"), ROM_WORD("1100"), ROM_WORD("1001"), ROM_WORD("1001"), ROM_WORD("1101"), ROM_WORD("1011"), ROM_WORD("1111"));begin DATA <= ROM(ADDR); -- Read from the ROMend XILINX;13.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: hahanova@mail.ru

×