• Простая реализация небольших CAM на ПЛИС

      Введение


      Как-то раз мне потребовалось по работе реализовать небольшой блок CAM (ассоциативной памяти). Почитав, как это делается у Xilinx на BRAM (блоках статической памяти) или на SRL16 (16 — битных сдвиговых регистрах), я несколько опечалился, так как их реализации занимали довольно много места. Решил попробовать сделать его самостоятельно. Первым вариантом стала реализация в лоб. Забегая вперед, она практически сходу мне и подошла, благо, целевая частота для дизайна была всего 125 МГц.

      Читать дальше →
    • На заре компьютерной памяти

      В статье есть тяжелые фото, так что убрал под спойлеры.

      Введение


      Проблема запоминания цифровой информации возникла раньше, чем появились собственно компьютеры. Перед тем, как говорить, о конкретных физических реализациях, введем терминологию.

      Память — физическое устройство или среда хранения данных. В простейшем случае память — массив нумерованных ячеек, содержащих «1» или «0». Записанные в тетрадке нули и единицы мы памятью считать не будем, так как невозможно (или строго говоря возможно но бессмысленно) автоматическое считывание такой памяти.

      С точки зрения организации доступа к данным память можно разделить на следующие несколько типов:

      • RAM – Random Access Memory, память со произвольным доступом. Можно прочитать или изменить любую ячейку.
      • ROM – Read-Only Memory, память, из которой можно прочитать любую ячейку но нельзя записать (Постоянное запоминающее устройство, ПЗУ).
      • FIFO – First In, First Out, память, в которую можно записать только сверху, а прочитать только снизу (в русских словах очередь).
      • Stack(LIFO) – Last In, First Out, Access память, доступ в которой на чтение и запись возможен только к верхнему элементу (мне очень нравится её советское название, магазин).
      • CAM — Content-addressable memory, память, адресуемая по содержимому (русское название — ассоциативная память).

      Узоры на ткани


      Впервые задача хранения и считывания данных из памяти была поставлена, а затем успешно решена для управления нитями в ткацком станке.
      Читать дальше →