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

 
 
> Память на плис, реализация памяти на VHDL или Coregen
Anton1990
сообщение Sep 17 2015, 05:21
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 155
Регистрация: 26-04-12
Пользователь №: 71 584



Все добрый день.
Использую виртекс6. Реализую промежуточный накопитель оцифрованного сигнала (16 бит) с АЦП с дискретизацией 200 МГц. и последующим сливом в ПК.
На VHDL реализовал накопитель. Вродебы все просто: в массив длинной 65536 загоняю сигнал и останавливаю запись. Далее медленно по PCI скачиваю данные. Сигнал тактирования разумеется законстрейнил (задал period). При компиляции не ругается. Вся конструкция работает, но наблюдается нестабильность от разводки к разведке проекта. При использовании FIFO созданного в Coregeneratore результат значительно лучше (практически нет глюков).
Вопрос: в чем отличие? Может я чего то незнаю? Какая нибудь потаенная галочка, констрейн или еще что?
Кстати памяти в плис используется немного всего 20 %.
Заранее спасибо за ответы.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
iosifk
сообщение Sep 17 2015, 09:06
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 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
Go to the top of the page
 
+Quote Post
Anton1990
сообщение Sep 17 2015, 09:21
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 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, се - сигналы разрешения, но нужно соблюдать правила...

из-за этого и спрашиваю что ТС описал или хотел описать


А что собственно в этих строчках ненравиться? О каких правилах речь?
Go to the top of the page
 
+Quote Post
iosifk
сообщение Sep 17 2015, 09:29
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Anton1990 @ Sep 17 2015, 12:21) *
Ну с коркой фифо я уже говорил работает лучше. Хочу узнать свои проблемы. Сигнал Rd это клок - по преднему фронту данные выставляются на шину PCI. Как таковой клок шины я не использую.

Тогда и говорить не о чем... Если данные не согласованы с клоком шины PCI, то результат как раз таким и будет...
И еще раз. Я Вам объясняю, что у Ксаййлинкса есть библиотечные компоненты, которые и надо использовать в таких случаях. Без всяких корегенов... А из c:\Xilinx\14.7\ISE_DS\ISE\verilog\src\unisims\..


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Anton1990
сообщение Sep 17 2015, 12:45
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 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 ...
или о чем речь?
Go to the top of the page
 
+Quote Post
Maverick
сообщение Sep 17 2015, 13:06
Сообщение #6


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Anton1990 @ Sep 17 2015, 15:45) *
Вы намекаете что в одном условии нельзя записывать условие клока и разрешения
if clk'event and clk='1' and ce='1' then ...
а нужно так
if ce='1' then
if clk'event and clk='1' then ...
или о чем речь?

я намекаю на
Код
if (C'event and C='1')then  
          if (CE='1') then


+

Код
if rd'event and rd='1' then
Ard <= Ard + 2; --адреса преребираем через два т.к. шина PCI 32 разряда
end if;

для синтезатора это счетчик работающий на тактовой частоте rd

мне не понятно, например, почему сигнал q_thres окончания наполнения данными в память, не передается на схему вычитки в PCI через синхронизирующие регистры?
Как я понял по q_thres начинается вычитка данных из памяти.
Мне не понятен обмен готовности выполнения различных процессов и/или синхронизации работы схем:
- запись данных в блочную память с АЦП
- вычитка данных из блочной памяти для PCI

PS Ваше описание мне тяжело читать. Разнесите в разные процессы
- запись данных в блочную память с АЦП
- вычитка данных из блочной памяти для PCI


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Anton1990
сообщение Sep 17 2015, 13:12
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 155
Регистрация: 26-04-12
Пользователь №: 71 584



Цитата(Maverick @ Sep 17 2015, 16:06) *
я намекаю на
Код
if (C'event and C='1')then  
          if (CE='1') then

А есть разница ?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - iosifk   Цитата(Anton1990 @ Sep 17 2015, 15:45) Си...   Sep 17 2015, 13:06
||- - 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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