Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Измерительное оборудование Осциллографы, мультиметры, анализаторы и другая измерительная техника необходимая каждому разработчику.

 
Опции темы
Непрочитано 17.09.2012, 23:53  
ВитГо
Прописка
 
Регистрация: 19.12.2009
Сообщений: 120
Сказал спасибо: 22
Сказали Спасибо 35 раз(а) в 22 сообщении(ях)
ВитГо на пути к лучшему
По умолчанию Re: Портативные осцилографы - своими руками

MisterDi, вот что у меня получилось пока на выходе из ПЛИС



правда постепенно падает возможная частота - сейчас уже меньше 150 мгц - квартус пишет при компиляции:
Info: Clock "clk" has Internal fmax of 142.21 MHz between source register "clk_ph[0]" and destination register "ram_data[7]~reg0" (period= 7.032 ns)

как то можно это обойти ?
причем с каждой командой в блоке case гд я обрабатываю эти 4 фазы сигнала частота падает мегагерц на 15-20 ((

а хотелось бы остаться на 150 мгц...
Реклама:
ВитГо вне форума  
Непрочитано 18.09.2012, 16:13  
MisterDi
Почётный гражданин KAZUS.RU
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Портативные осцилографы - своими руками

Цитата:
как то можно это обойти ?
причем с каждой командой в блоке case гд я обрабатываю эти 4 фазы сигнала частота падает мегагерц на 15-20
Увеличивается размер мультиплексора и соответственно растет задержка.
Давайте уточним что мы делаем. Я так понимаю - формирователь сигналов управления статической памятью для осциллографа.
Собственно сам формирователь имеет следующие состояния:
-пассивный - ждем готовности ЦП к обработке данных
-ожидание синхроимпульса - ждем прихода синхроимпульса, при этом ведем запись предистории сигнала
-захват данных - пишем данные в буфер до получение нужного количества отсчетов
-чтение данных - тут возможны разные варианты реализации, т.к. можно либо использовать счетчик адресов для чтение, либо мльтиплексировать шину адреса на шину ЦП.
Посмотрите реализацию управляющего автомата в китайском проекте в начале этой темы. Думаю станет понятнее.
__________________
misterdi<@>i.ua
MisterDi вне форума  
Непрочитано 19.09.2012, 01:07  
ВитГо
Прописка
 
Регистрация: 19.12.2009
Сообщений: 120
Сказал спасибо: 22
Сказали Спасибо 35 раз(а) в 22 сообщении(ях)
ВитГо на пути к лучшему
По умолчанию Re: Портативные осцилографы - своими руками

Сообщение от MisterDi Посмотреть сообщение
Посмотрите реализацию управляющего автомата в китайском проекте в начале этой темы. Думаю станет понятнее.
а где исходники ? в начале темы не нашел..по ссылкам сходил - но там китайский - поглазел на иероглифы и вышел ..

но все таки я сделал что хотел (рабочая частота при захвате потока с АЦП в симуляции до 170 мгц) - помоему я потихоньку стал понимать как работает плис !

теперь делаю интерфейс для управляющего плис контроллера (планируется что можно будет использовать любой контроллер от avr и pic до stm32).

и мне нужна inout шина данных общения с плис

к сожалению примеров как ею пользоваться не нашел

мне нужны команды перевода шины из выхода на вход и обратно
и плюс к этому нужно чтобы на выходе шина была как output reg (везде в доках пишут что inout это wire)

где можно увидеть пример кода на verilog в котором это реализуется?

Последний раз редактировалось ВитГо; 19.09.2012 в 01:10.
ВитГо вне форума  
Непрочитано 19.09.2012, 09:27  
MisterDi
Почётный гражданин KAZUS.RU
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Портативные осцилографы - своими руками

Цитата:
и мне нужна inout шина данных общения с плис
к сожалению примеров как ею пользоваться не нашел
мне нужны команды перевода шины из выхода на вход и обратно
Для выбора направления передачи нужен дополнительный сигнал, который будет переключать буферы ввода/вывода. Посмотрите как рисуют двунаправленный буфер в Квартусе. Там два элемента и вход выбора направления. Внутри ПЛИС тристабильных шин нет все делается на мультиплексорах.

Давайте в личку Вашу почту, сброшу полный китайский проект. Там около 5Мб.
__________________
misterdi<@>i.ua

Последний раз редактировалось MisterDi; 19.09.2012 в 09:33.
MisterDi вне форума  
Непрочитано 19.09.2012, 15:26  
ВитГо
Прописка
 
Регистрация: 19.12.2009
Сообщений: 120
Сказал спасибо: 22
Сказали Спасибо 35 раз(а) в 22 сообщении(ях)
ВитГо на пути к лучшему
По умолчанию Re: Портативные осцилографы - своими руками

MisterDi,

я сейчас уже сделал за 4 такта 2 сканирования ADC и запись слова (16 бит) в SRAM

а как вы записывали в 2х тактах ?
я посмотрел схему вашего осциллографа - и увидел что у вас тактовый сигнал для ADC и ПЛИС идет напрямую
то есть вы записываете 16 бит в SRAM каждый второй такт ПЛИС ?
ВитГо вне форума  
Непрочитано 19.09.2012, 17:04  
MisterDi
Почётный гражданин KAZUS.RU
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Портативные осцилографы - своими руками

Да. Стоят два регистра последовательно-параллельно, данные сдвигаются каждый такт, а импульс разрешения записи в ОЗУ проходит через 1 такт. В принципе расчет достаточно простой. Есть поток от АЦП с заданной полосой (100Мбайт/с) Для того, чтобы уменьшить тактовую частоту, нужно увеличить разрядность шины данных, по аналогии с обычной трубой (чем больше диаметр, тем ниже скорость для постоянного потока). Когда-то была мысль попробовать сделать захват 8-разрядных данных для STM-32 напрямую в память через 32-разрядній порт, с использованием 4-х регистров, но пока не созрел.
__________________
misterdi<@>i.ua

Последний раз редактировалось MisterDi; 19.09.2012 в 17:10.
MisterDi вне форума  
Непрочитано 19.09.2012, 21:58  
ВитГо
Прописка
 
Регистрация: 19.12.2009
Сообщений: 120
Сказал спасибо: 22
Сказали Спасибо 35 раз(а) в 22 сообщении(ях)
ВитГо на пути к лучшему
По умолчанию Re: Портативные осцилографы - своими руками

MisterDi,
я переписал сейчас захват на 2ух тактовую работу с SRAM

ADC тактирую той же частотой что и ПЛИС

время сигнала RAM_WR=8 нс, при частоте CLK=125 MHz - то есть вписываюсь во все что хочу...

но при симуляции в квартусе с параметром Timing получаю такую картинку


я обвел красным - непонятные мне части.. там какое то непонятное изменение значения шины

специально сделал голый код (создал новый проект и вписал только голый функционал захвата).
где он работает не правильно ?

Код:
module oscil2 (clk, adc_inp, ram_adr, ram_data, ram_wr);

input 			   clk;		   // тактовый сигнал
input [7:0]		   adc_inp;    // вход с АЦП

output reg [17:0]  ram_adr;    // шина адреса SRAM
output reg [15:0]  ram_data;  // шина данных SRAM
output reg		   ram_wr;     // сигнал записи SRAM

reg                clk_phase;  // Фаза обработки
reg	[17:0]		   reg_adr_wr; // регистр адреса
reg [7:0]          reg_adc;    // значение АЦП прошлого захвата
initial
begin
   clk_phase‹=0;               // первоначальная установка фазы захвата
   reg_adr_wr‹=0;              // первоначальная установка адреса
end

always @(posedge clk)
begin
   case (clk_phase)
      0: begin
            ram_data[7:0]‹=reg_adc[7:0];          // выдача данных для записи
            ram_data[15:8]‹=adc_inp[7:0];	      // 

            ram_wr‹=0;

            clk_phase‹=1;
            reg_adr_wr[17:0]=reg_adr_wr[17:0]+1; // приращение адреса для записи            
         end

      1: begin
            reg_adc[7:0]‹=adc_inp[7:0];	         // чтение состояния АЦП           

            ram_adr[17:0]‹=reg_adr_wr[17:0];	  // выставляем адрес для записи

            ram_wr‹=1;
            clk_phase‹=0;
         end
   endcase
end

endmodule
p.s. тут есть BB-код спойлера ?
ВитГо вне форума  
Непрочитано 19.09.2012, 22:41  
MisterDi
Почётный гражданин KAZUS.RU
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Портативные осцилографы - своими руками

То, что вы обвели - процесс переключения выходов. Показывает все честно Думаю Вам есть смысл ram_wr, инкремент адреса и тактирование АЦП делать по отрицательному фронту основной тактовой частоты. Это уберет неопределенность состояния входов ОЗУ в момент записи и даст нормальные данные на выходе. По-моему в качестве ram_wr я использовал младший разряд счетчика адреса.
Цитата:
тут есть BB-код спойлера ?
насколько помню - нет. Большие исходники делают аттачем.
__________________
misterdi<@>i.ua

Последний раз редактировалось MisterDi; 19.09.2012 в 22:54.
MisterDi вне форума  
Непрочитано 19.09.2012, 22:53  
ВитГо
Прописка
 
Регистрация: 19.12.2009
Сообщений: 120
Сказал спасибо: 22
Сказали Спасибо 35 раз(а) в 22 сообщении(ях)
ВитГо на пути к лучшему
По умолчанию Re: Портативные осцилографы - своими руками

Сообщение от MisterDi Посмотреть сообщение
То, что вы обвели - процесс переключения выходов. Показывает все честно Думаю Вам есть смысл ram_wr переключать по отрицательному фронту основной тактовой частоты. Это уберет неопределенность состояния входов ОЗУ в момент записи и даст нормальные данные на выходе.
тогда получается весь проект синхронизировать по @(negedge clk) так как квартус не позволит использовать отрицательный и положительный фронт одного сигнала в проекте..
или это как то обходиться ?
ВитГо вне форума  
Непрочитано 19.09.2012, 23:03  
MisterDi
Почётный гражданин KAZUS.RU
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Портативные осцилографы - своими руками

То, что синхронизироваться можно по любому фронту - это однозначно, т.к. при схематическом вводе такты через инвертор пропускаются без каких-либо вопросов. Похоже тут мы получаем необходимость второго модуля и приходим к реализации концепции параллельной работы . Знаю, что идеологически правильно весь проект делать на языке описания аппаратуры, но пока не не могу привыкнуть к текстовым описаниям, поэтому делаю смешанные проекты.
__________________
misterdi<@>i.ua
MisterDi вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Люстра Чижевского своими руками Alexeii Электроника - это просто 134 17.07.2016 16:55
Универсальный пульт управления своими руками Alex95_mobile Видеотехника 8 09.10.2011 17:00
Акустика своими руками Mr.CG Аудиотехника 4 23.11.2010 18:20
Компьютерные колонки своими руками tabard Делимся опытом 0 17.10.2010 19:36
PoE своими руками illias Источники питания и свет 9 14.04.2010 16:39


Часовой пояс GMT +4, время: 20:57.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot