реклама на сайте
подробности

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> FIFO (CPLD+SRAM)
Gorby
сообщение Sep 25 2015, 10:23
Сообщение #46


Местный
***

Группа: Свой
Сообщений: 449
Регистрация: 28-10-04
Из: Украина
Пользователь №: 1 002



Цитата(uragan90 @ Sep 25 2015, 10:45) *
У меня не двух портовая память CY7C1041DV33
У неё нет такой возможности обращения к одним и тем же данным по разным портам

Да и не надо. Не о том речь.
Используйте Актив-ХДЛ!
Нарисуйте пути данных, а управление уже очевидным будет.

обратите внимание на часть "схемы" справа. С буквой М - сигналы на память. Внутренняя шина MUXERR - вход ФИФО. Шина UD - выход ФИФО.
M2D - двунаправленная шина данных микросхемы памяти (16 бит). M2A - адреса памяти. U11 и U7 -вот собственно две простые машинки, рулящие управлением. FIFO_FULL - внешний вход, собственно ЗАПРОС данных (имелся в виду фифо юсб контроллера). Если фулл, то данные НЕ слать. Данные из ФИФО наружу (UD) стробируются USBWRN (низкий уровень) по клоку IFCLK - формируется из основного клока.

А какие там проблемы с моделированием шин? Есть там конечно нюансы, но не страшные.

Прикрепленное изображение


--------------------
Умею молчать на 37 языках...
Go to the top of the page
 
+Quote Post
Corner
сообщение Sep 28 2015, 19:28
Сообщение #47


Профессионал
*****

Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815



Цитата(EvgenyNik @ Sep 25 2015, 11:55) *
Дык, Вам и пишут - как из обычного 100МГц ОЗУ сделать а-ля двухпортовое 50МГц ОЗУ. Только порты будут фактически на ПЛИСке.

Ничего не выйдет. СОЗУ то и 100 МГц, да чтение за 1 такт никак даже на ФПГА. А ЦПЛД еще тормознее. Выйдет 33 МГц на чтение и 20... 25 на запись. Но работать будет несомненно. Только еще придется ФИФО на регистрах небольшое сделать для когерентности с МК, а то лаг на чтение неизбежен.

Сообщение отредактировал Corner - Sep 28 2015, 19:29
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Sep 28 2015, 23:46
Сообщение #48


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(Corner @ Sep 28 2015, 22:28) *
Ничего не выйдет. СОЗУ то и 100 МГц, да чтение за 1 такт никак даже на ФПГА. А ЦПЛД еще тормознее. Выйдет 33 МГц на чтение и 20... 25 на запись. Но работать будет несомненно. Только еще придется ФИФО на регистрах небольшое сделать для когерентности с МК, а то лаг на чтение неизбежен.


Ой да что вы говорите! Не пугайте маленьких. Я еще на MAX7000 серии делал подобное и на статике и на просто DDR 100 MHz вполне себе рабочая была. У TC конечно память слегка неудобная для таких частот тут лучше синхронная статика подошла бы - придется помурыжится с таймингами чтобы вытянуть 100 MHz рабочей

Судя по схеме у вас запись и чтение последовательные - что еще сильнее упрощает задачу
Просто чередовать WR/RD циклы, Запись при накоплении 2 отсчетов, чтение ПОСТОЯННО по текущему указателю. Соответственно данные для чтения MK будут доступны сразу. Если времянка памяти не позволит переключение WR/RD в пределах такта (no ZBT) тогда придется делат WR,WR,WR,-,RD,-, итого за 6 тактов - 3 записи - 1 чтение -
Для WR путь синхронный, а частота RD значительно ниже рабочей так что синхронизация будет не сложной.

Дерзайте!

Удачи! Rob.
Go to the top of the page
 
+Quote Post
uragan90
сообщение Sep 30 2015, 09:00
Сообщение #49


Местный
***

Группа: Свой
Сообщений: 248
Регистрация: 2-02-09
Из: Тверь
Пользователь №: 44 309



Цитата(RobFPGA @ Sep 29 2015, 03:46) *
Приветствую!



Ой да что вы говорите! Не пугайте маленьких. Я еще на MAX7000 серии делал подобное и на статике и на просто DDR 100 MHz вполне себе рабочая была. У TC конечно память слегка неудобная для таких частот тут лучше синхронная статика подошла бы - придется помурыжится с таймингами чтобы вытянуть 100 MHz рабочей

Дерзайте!

Удачи! Rob.


Спасибо за поддержку!
Вот такая схема вырисовывается, остаётся реализовать конечный автомат.
8 разрядные данные гружу в регистр 16 бит и сигнал sby который теперь фактически сформировался и снизил частоту со 100 до 50Мгц.
Всем этим делом будет рулить конечный автомат, получать запросы на чтение и формировать подтверждение когда процесс записи деактивируется.
Ну как думаете, получится иль нет?

Текст счётчика адреса выглядит следующим образом:
CODE
module ADDR_counter(
input res,
input clk,
input wr,
input rd,
output full,
output empty,
output [ADDR-1:0] Addr_Sram
);

parameter ADDR = 5; // Параметр разрядности Адреса SRAM

//--- Счётчики адресов чтения и записи ------------------------------
assign Addr_Sram = (wr) ? write_addr[ADDR-1 : 0] : read_addr[ADDR-1 : 0];
reg [ADDR:0] read_addr=0;
always @(posedge clk or posedge res) //По такту чтения
begin
if(res)
begin
read_addr <= 0;
end
else
begin
if (rd) read_addr <= read_addr + 1'b1;
else read_addr <= read_addr;
end
end
//---
reg [ADDR:0] write_addr=0;
always @(posedge clk or posedge res) //По такту записи
begin
if(res)
begin
write_addr <= 0;
end
else
begin
if (wr) write_addr <= write_addr + 1'b1;
else write_addr <= write_addr;
end
end
//--- Абработка флагов заполненности ФИФО ------------------------------
assign full = ((write_addr[ADDR-1:0] == read_addr[ADDR-1:0]) && (write_addr[ADDR] ^ read_addr[ADDR]))? 1'b1 : 1'b0; //Фифо полное
assign empty = ((write_addr[ADDR-1:0] == read_addr[ADDR-1:0]) && (!(write_addr[ADDR] ^ read_addr[ADDR])))? 1'b1 : 1'b0; //Фифо пустое

endmodule


А вот схема

Прикрепленные файлы
Прикрепленный файл  fifo.pdf ( 388.81 килобайт ) Кол-во скачиваний: 39
 
Go to the top of the page
 
+Quote Post
uragan90
сообщение Sep 30 2015, 17:49
Сообщение #50


Местный
***

Группа: Свой
Сообщений: 248
Регистрация: 2-02-09
Из: Тверь
Пользователь №: 44 309



Начертал схемку которая решает практически половину всего дела laughing.gif
Пока идёт запись sby мы можем записать в регистр запрос на чтение rqs и как только sby деактивируется, мы читаем байт и выставляем подтверждение ack, сбросив тем самым регистр чтения. При следующем запросе чтения мы сбросим подтверждение ack.

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post

4 страниц V  « < 2 3 4
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 07:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01406 секунд с 7
ELECTRONIX ©2004-2016