|
Память на плис, реализация памяти на VHDL или Coregen |
|
|
|
 |
Ответов
|
Sep 17 2015, 09:06
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(Anton1990 @ Sep 17 2015, 08:21)  При использовании FIFO созданного в Coregeneratore результат значительно лучше (практически нет глюков). Я для таких целей применяю библиотечный компонент Ксайлинкса. Он легко устанавливается в проект и он достаточно описан... Да и текста в проекте значительно меньше... Про клоки в Вашем тексте все понятно, а вот про rd'event не понятно... Что это? Это частота или внешние сигналы? Для PCI Вы должны иметь их клоки и сигналы чтения. Так вот, сигналы чтения надо применить как "разрешение", а не как тактовые. Иначе и пойдут глюки... Еще где-то надо учесть латентность... А еще взять FIFO у которого с одной стороны 16 бит, а с другой 32... Это тоже очень просто...
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Sep 17 2015, 09:21
|
Частый гость
 
Группа: Участник
Сообщений: 155
Регистрация: 26-04-12
Пользователь №: 71 584

|
Цитата(iosifk @ Sep 17 2015, 12:06)  Я для таких целей применяю библиотечный компонент Ксайлинкса. Он легко устанавливается в проект и он достаточно описан... Да и текста в проекте значительно меньше... Про клоки в Вашем тексте все понятно, а вот про rd'event не понятно... Что это? Это частота или внешние сигналы? Для PCI Вы должны иметь их клоки и сигналы чтения. Так вот, сигналы чтения надо применить как "разрешение", а не как тактовые. Иначе и пойдут глюки... Еще где-то надо учесть латентность...
А еще взять FIFO у которого с одной стороны 16 бит, а с другой 32... Это тоже очень просто... Ну с коркой фифо я уже говорил работает лучше. Хочу узнать свои проблемы. Сигнал Rd это клок - по преднему фронту данные выставляются на шину PCI. Как таковой клок шины я не использую. Цитата(Maverick @ Sep 17 2015, 12:10)  там кроме rd'event есть еще if clk'event and clk='1' and q_thres='0' then if clk'event and clk='1' and ce='1' then
я понимаю что q_thres, се - сигналы разрешения, но нужно соблюдать правила...
из-за этого и спрашиваю что ТС описал или хотел описать А что собственно в этих строчках ненравиться? О каких правилах речь?
|
|
|
|
|
Sep 17 2015, 12:45
|
Частый гость
 
Группа: Участник
Сообщений: 155
Регистрация: 26-04-12
Пользователь №: 71 584

|
Цитата(iosifk @ Sep 17 2015, 12:29)  Тогда и говорить не о чем... Если данные не согласованы с клоком шины PCI, то результат как раз таким и будет... И еще раз. Я Вам объясняю, что у Ксаййлинкса есть библиотечные компоненты, которые и надо использовать в таких случаях. Без всяких корегенов... А из c:\Xilinx\14.7\ISE_DS\ISE\verilog\src\unisims\.. Сигнал Rd от шины совершенно непричем. Ведь я его использую и с корегеновской коркой. Да и к томуже если я делаю память не на 65536 отсчетов на например 1024 то проблем никаких не возникает. Как я понимаю проблема имеено в размешении блоков памяти по кристалу при большом используемом количестве. Ну может я, конечно, и ошибась где-то. Но на основе своего опыта (довольно большого) могу сказать что элементы сгенерированные корегеном работаю стабильнее будьто память, простые умножители или фильтры построенные на умножителях. Разумного объяснения у меня этому нет. Цитата(Maverick @ Sep 17 2015, 12:25)  пример
[code]-- Following is the equivalent VHDL code for a 4-bit register with a positive-edge clock, asynchronous set and clock enable. library ieee; use ieee.std_logic_1164.all; Вы намекаете что в одном условии нельзя записывать условие клока и разрешения if clk'event and clk='1' and ce='1' then ... а нужно так if ce='1' then if clk'event and clk='1' then ... или о чем речь?
|
|
|
|
|
Sep 17 2015, 13:06
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(Anton1990 @ Sep 17 2015, 15:45)  Сигнал Rd от шины совершенно непричем. Ведь я его использую и с корегеновской коркой. Да и к томуже если я делаю память не на 65536 отсчетов на например 1024 то проблем никаких не возникает. Как я понимаю проблема имеено в размешении блоков памяти по кристалу при большом используемом количестве. Ну может я, конечно, и ошибась где-то. Но на основе своего опыта (довольно большого) могу сказать что элементы сгенерированные корегеном работаю стабильнее будьто память, простые умножители или фильтры построенные на умножителях. Разумного объяснения у меня этому нет. У Вас в виртекс 6 есть блоки 32K × 1... Так вот, возьмите две группы по 16 блоков. И каждый блок - подключите к одному биту данных... По входу данные от АЦП подать параллельно на обе группы, а выбор группы определять по сигналу разрешение записи. А его взять от старшего разряда счетчика. Теперь по выходу FIFO... Поскольку по чтению вообще спешить некуда, то можно блоки прицепить к 32 битам а при чтении учитывать старшее или младшее слово... Или так... учитывая, что чтение идет медленно, то модно сделать и мультиплексор по выходу... Или же брать FIFO с разрядностью 1 на входе и 2 на выходе... При таком раскладе точно не будет мультиплексоров по данным на входе, а значит, что легче будет развести проект по кристаллу. И скорее всего визард так и делает. А компилятор - нет. Посмотрите, что получается после компиляции - оптимизации... Вот потому я всегда такие вещи делаю сам... А если совсем честно, то тут не нужно FIFO, а нужна обычная память с шинами на запись и на чтение... И с одним клоком на 200 Мгц... весь проект сделать на этой частоте. А клок от PCI можно привести к клоку 200 Мгц.
--------------------
www.iosifk.narod.ru
|
|
|
|
Сообщений в этой теме
Anton1990 Память на плис Sep 17 2015, 05:21 Maverick Цитата(Anton1990 @ Sep 17 2015, 08:21) Вс... Sep 17 2015, 05:28 Krys Цитата(Maverick @ Sep 17 2015, 12:28) дву... Sep 17 2015, 06:03 blackfin Цитата(Anton1990 @ Sep 17 2015, 08:21) Си... Sep 17 2015, 05:41 Golikov A. Цитатана двухпортовой памяти с независимыми клокам... Sep 17 2015, 06:18 blackfin Цитата(Golikov A. @ Sep 17 2015, 09:18) д... Sep 17 2015, 06:24 Golikov A. в том что скачиваться данные из памяти могут на од... Sep 17 2015, 06:52 Anton1990 Цитата(Golikov A. @ Sep 17 2015, 09:52) в... Sep 17 2015, 08:07 Golikov A. ЦитатаЕще раз. В память данные пишутся на 200 МГц
... Sep 17 2015, 08:22 Anton1990 Цитата(Golikov A. @ Sep 17 2015, 11:22) к... Sep 17 2015, 08:36  Maverick Цитата(Anton1990 @ Sep 17 2015, 11:36) Ни... Sep 17 2015, 09:02 Maverick Цитата(iosifk @ Sep 17 2015, 12:06) Про к... Sep 17 2015, 09:10  Maverick Цитата(Anton1990 @ Sep 17 2015, 12:21) А ... Sep 17 2015, 09:25    Maverick Цитата(Anton1990 @ Sep 17 2015, 15:45) Вы... Sep 17 2015, 13:06     Anton1990 Цитата(Maverick @ Sep 17 2015, 16:06) я н... Sep 17 2015, 13:12      Maverick Цитата(Anton1990 @ Sep 17 2015, 16:12) А ... Sep 17 2015, 13:22     Anton1990 Цитата(Maverick @ Sep 17 2015, 16:06) я н... Sep 17 2015, 13:48      Krys Цитата(Anton1990 @ Sep 17 2015, 20:48) Ту... Sep 18 2015, 08:05 Golikov A. есть, потому что синтезаторы анализирует текст на ... Sep 17 2015, 13:25 Golikov A. строго говоря я думаю что именно в этом случае син... Sep 17 2015, 13:59 Anton1990 Цитата(Golikov A. @ Sep 17 2015, 16:59) с... Sep 17 2015, 14:41 Golikov A. ЦитатаВообще схема отработанная годами. Память в п... Sep 17 2015, 18:36 iosifk Цитата(Golikov A. @ Sep 17 2015, 21:36) т... Sep 17 2015, 19:16 Anton1990 Цитата(Golikov A. @ Sep 17 2015, 21:36) т... Sep 18 2015, 06:08  Maverick Цитата(Anton1990 @ Sep 18 2015, 09:08)
О... Sep 18 2015, 06:56 Golikov A. ЦитатаЕсли частота выставления адреса чтения очень... Sep 18 2015, 06:25
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|