ОЗУ с раздельными входами и выходами

Do you have a question? Post it now! No Registration Necessary

Threaded View
Что то я никак не могу найти доступного ОЗУ приличной емкости (не меньше 256(!)
байт
или полубайт) с разделенными входами и выходами. Емкость в тысячи байт/полубайт
тоже годится. Желательна скорость <<50 нс. Было у меня почему то представление,
что
кэши старые строились на чем то похожем - но там обычные ОЗУ с совмещенными IO.

Для чего это надо - чтобы сделать "двухпортовое" ОЗУ большой емкости (а вот зачем
нужно это - объяснять уж совсем долго). Представляется, что это можно сделать
объеденив по входам данных два ОЗУ (и объединив адресные входы на время записи).
Реальная двухпортовость не нужна - важнее размер ОЗУ и цена, а то можно было бы
готовые чипы использовать - регистровые файлы (мала емкость) или двухпортовки ОЗУ
(цены сильно за 100 баксов и архитектура все равно не подходящая).

Аркадий

ОЗУ с раздельными входами и выходами
Tue Jan 04 2005 05:37, Arcady Schekochikhin wrote to All:

 AS> Что то я никак не могу найти доступного ОЗУ приличной емкости (не меньше
 AS> 256(!) байт  или полубайт) с разделенными входами и выходами. Емкость в
 AS> тысячи байт/полубайт  тоже годится. Желательна скорость <<50 нс.

 AS> Для чего это надо - чтобы сделать "двухпортовое" ОЗУ большой емкости

Обычное ОЗУ, успевающее сделать _два_ цикла за 50нс + схема на логике или
PLD, занимающаяся распределением этих циклов туда-сюда.

WBR, Yuriy.


Re: ОЗУ с раздельными входами и выходами
Quoted text here. Click to load it

По условию задачи PLD не желательны категорически. И циклов получается не 2
а 3 (2 их уже - чтение-запись). Получается ОЗУ типа 30 нс - таким управлять будет
ой как хреново, а еще мультиплексоры и регистры для такой скорости... К сожалению
вариант не прокатит (да он уже и рассматривался).

Re: ОЗУ с раздельными входами и выходами
Привет Arcady!

04 Jan 05 05:37, Arcady Schekochikhin писал All:

 AS> Что то я никак не могу найти доступного ОЗУ приличной емкости (не

 AS>  Реальная двухпортовость не нужна -
 AS> важнее размер ОЗУ и цена, а то можно было бы готовые чипы
 AS> использовать
 AS> - регистровые файлы (мала емкость) или двухпортовки ОЗУ (цены сильно
 AS> за 100 баксов и архитектура все равно не подходящая).

    Может устроит ПЛИС? Altera EP1K10 можно купить за $10.

Всего наилучшего,                                 [Team PCAD 2000]
Алексей М.
... Вышла корова в чисто поле, да всё его и запачкала.

ОЗУ с раздельными входами и выходами
Tue, 4 Jan 2005 02:37:47 +0000 (UTC) Arcady Schekochikhin wrote :

AS> Что то я никак не могу найти доступного ОЗУ приличной емкости (не меньше
AS> 256(!) байт или полубайт) с разделенными входами и выходами. Емкость в
AS> тысячи байт/полубайт тоже годится. Желательна скорость <<50 нс. Было у меня
AS> почему то представление, что кэши старые строились на чем то похожем - но
AS> там обычные ОЗУ с совмещенными IO.

AS> Для чего это надо - чтобы сделать "двухпортовое" ОЗУ большой емкости (а вот
AS> зачем нужно это - объяснять уж совсем долго). Представляется, что это можно
AS> сделать объеденив по входам данных два ОЗУ (и объединив адресные входы на
AS> время записи). Реальная двухпортовость не нужна - важнее размер ОЗУ и цена,
AS> а то можно было бы готовые чипы использовать - регистровые файлы (мала
AS> емкость) или двухпортовки ОЗУ (цены сильно за 100 баксов и архитектура все
AS> равно не подходящая).

    Варианты:

    1) Обычное статическое ОЗУ + ПЛИС. Лучше синхронную память юзать.

        [+] Полная гибкость.
        [+] Приличный объем (хоть мегабайты).
        [-] Сложность (относительная, конечно) реализации.


    2) Двухпортовая память. Делает, например Cypress.

        [+] Высокая пропускная способность.
        [+] Приличный объем (хоть мегабайты).
        [+] Реализация проще, чем в 1, хотя без логики не обойтись.
        [-] Гибкости полной нет (если не требуется, то это не минус).
        [-] Требуется много ног на ввод-вывод (в случае ПЛИС, например).

    3) Специализированные МС FIFO. Делают, например, Cypress, IDT.

        [+] Высокая пропусаная способность.
        [+] Объем от 2К до 8К+. Организация 8/16/32/9/18 бит. Есть
            двунаправленные.
        [+] Реализация простая.
        [-] Гибкости полной нет (если не требуется, то это не минус).

    4) Использовать FPGA с внутренней памятью в качестве FIFO.

        [+] Реализация простая, все в одном кристалле.
        [+] Полная гибкость.
        [-] Небольшие (по сравнению с МС памяти) объемы.


    Учитывая, что надо всего 256 байт (не килобайт), я бы остановился на
последнем, 4-м варианте. Например, Циклон (Альтера) EP1C3 стОит порядка $20-25,
в нем почти 60 килобит двухпортового ОЗУ на 200 МГц. Т.е. 13 блоков, каждый из
которых может быть сконфигурирован как 256х16. Т.е. в сумме можно получить
емкость три с лишним килослова. К тому же вся сопутствующая логика там же.
Реализация очень простая. Вот пример (из рабочего проекта) FIFO 256х16
(Verilog):

// --------------------------------------------------------
module MFIFO_256x16
(
    input clk,
    input reset,

    input  [15:0] datain,
    output [15:0] dataout,

    output reg [8:0] count,

    input write,
    input read
);

    reg [7:0] First;
    reg [7:0] Last;

    DP_RAM256x16 Pool
    (
        .data(datain),
        .wren(write),
        .wraddress(Last),
        .rdaddress(First),
        .clock(clk),
        .q(dataout)
    );

    always @(posedge clk, posedge reset)
    begin
        if(reset) begin
            First <= 0;
            Last  <= 0;
            count <= 0;
        end
        else begin
            if(write && read) begin
                Last  <= Last + 1;
                First <= First + 1;
            end
            else if(write) begin
                Last  <= Last + 1;
                count <= count + 1;
            end
            else if(read) begin
                First <= First + 1;
                count <= count - 1;
            end
        end
    end
endmodule

// --------------------------------------------------------

    Модуль памяти (DP_RAM256x16) сгенерен Квартусовской тулзой - MegaWizard
Plugin Manager'ом, там все просто. Модуль FIFO синхронный, все работает по
клоку. В принципе этот модуль может быть и одним в проекте (головным), если
больше ничего не надо. Понятно, что функциональность можно легко расширить,
введя флаги FULL и EMPTY, как это принято в стандартных реализациях. Но мне
было удобнее вместо этого просто вывести наружу текущее количество элементов
'count' и внешними средствами контролировать процесс наполнения/опустошения
буфера.

    Можно еще дешевле решение получить, если использовать более скромный по
ресурсам чип EP1K10 (Альтера, ACEX). У него всего три блока и память не такая
быстрая. Но для 256 байт должно хватить с многократным запасом. Память тоже
двухпортовая. Стоит такая микруха порядка $10-12.

    Ну и еще плюс конфигуратор. Тоже, правда, денег стоит. Могу напутать
(давно уже с этим не имел дела), но для ACEX годится флешовый конфигуратор
AT17C512, стОит тоже порядка 10 зеленых. Для Циклонов есть новые EPCS1, тянет
на 4-5 баксов. Может ли он грузить ACEX, не знаю, не выяснял это специально
(похоже, что нет, т.к. он для схемы Active Serial, а ACEX использует Passive
Serial). Более дешевый вариант можно получить при использовании дешевого МК +
DataFlash. Тут, правда, реализация позамороченнее.

    В общем, при указанных требования по объему FIFO я бы смотрел на последние
два варианта: 3-й - максимально дешевый и простой (CY7C4201V - $10-15, зато
больше ничего не надо), 4-й - тоже простой, относительно недорогой и
максимально гибкий - там можно еще много чего помимо FIFO наворотить, если
надо. Первые два варианта годятся, если надо большие объемы.

--
H.Z.

h.z<antispam::at>ngs<antispam::period>ru

We've slightly trimmed the long signature. Click to see the full one.
Re: ОЗУ с раздельными входами и выходами
Harry,

спасибо конечно, только я никак не могу уяснить - какое отношение ФИФО имеют к
ОЗУ
и каким именно образом их можно использовать с произвольной адресацией? А ОЗУ
кипресовские двухпортовые - они к сожалению совсем не так двухпортовы как надо
(а надо как регистровые файлы - только емкость больше) да и цена их просто
неприличная. Что касается ФПГА - условие задачи таково что ничто программируемое
туда не годится - с ФПГА то каждый может! И вообще должны быть ДИПы! Это типа
такое садо-мазо развлечение.

Но я уже понял что хочу странного и вопрос снимается совсем - попробуем зайти с
другого конца.

Аркадий

Site Timeline