Do you have a question? Post it now! No Registration Necessary
Subject
- Posted on
ОЗУ с раздельными входами и выходами
- 01-04-2005
- Arcady Schekochikhin
January 4, 2005, 2:37 am

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

ОЗУ с раздельными входами и выходами
Tue Jan 04 2005 05:37, Arcady Schekochikhin wrote to All:
AS> Что то я никак не могу найти доступного ОЗУ приличной емкости (не меньше
AS> 256(!) байт или полубайт) с разделенными входами и выходами. Емкость в
AS> тысячи байт/полубайт тоже годится. Желательна скорость <<50 нс.
AS> Для чего это надо - чтобы сделать "двухпортовое" ОЗУ большой емкости
Обычное ОЗУ, успевающее сделать _два_ цикла за 50нс + схема на логике или
PLD, занимающаяся распределением этих циклов туда-сюда.
WBR, Yuriy.
AS> Что то я никак не могу найти доступного ОЗУ приличной емкости (не меньше
AS> 256(!) байт или полубайт) с разделенными входами и выходами. Емкость в
AS> тысячи байт/полубайт тоже годится. Желательна скорость <<50 нс.
AS> Для чего это надо - чтобы сделать "двухпортовое" ОЗУ большой емкости
Обычное ОЗУ, успевающее сделать _два_ цикла за 50нс + схема на логике или
PLD, занимающаяся распределением этих циклов туда-сюда.
WBR, Yuriy.

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

По условию задачи 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]
Алексей М.
... Вышла корова в чисто поле, да всё его и запачкала.
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 наворотить, если
надо. Первые два варианта годятся, если надо большие объемы.
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
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
- » nrf2401
- — Next thread in » Microcontrollers (Russian)
-
- » AT89S53 + WDT - вопрос
- — Previous thread in » Microcontrollers (Russian)
-
- » По моему это гениально
- — Newest thread in » Microcontrollers (Russian)
-
- » Re: Najważniejszy jest stały etat!
- — The site's Newest Thread. Posted in » Electronics (Polish)
-