Измерительное оборудование Осциллографы, мультиметры, анализаторы и другая измерительная техника необходимая каждому разработчику. |
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
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: Портативные осцилографы - своими руками
Цитата:
|
как то можно это обойти ?
причем с каждой командой в блоке case гд я обрабатываю эти 4 фазы сигнала частота падает мегагерц на 15-20
|
Увеличивается размер мультиплексора и соответственно растет задержка.
Давайте уточним что мы делаем. Я так понимаю - формирователь сигналов управления статической памятью для осциллографа.
Собственно сам формирователь имеет следующие состояния:
-пассивный - ждем готовности ЦП к обработке данных
-ожидание синхроимпульса - ждем прихода синхроимпульса, при этом ведем запись предистории сигнала
-захват данных - пишем данные в буфер до получение нужного количества отсчетов
-чтение данных - тут возможны разные варианты реализации, т.к. можно либо использовать счетчик адресов для чтение, либо мльтиплексировать шину адреса на шину ЦП.
Посмотрите реализацию управляющего автомата в китайском проекте в начале этой темы. Думаю станет понятнее.
__________________
misterdi<@>i.ua
|
|
|
|
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
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: Портативные осцилографы - своими руками
Цитата:
|
и мне нужна inout шина данных общения с плис
к сожалению примеров как ею пользоваться не нашел
мне нужны команды перевода шины из выхода на вход и обратно
|
Для выбора направления передачи нужен дополнительный сигнал, который будет переключать буферы ввода/вывода. Посмотрите как рисуют двунаправленный буфер в Квартусе. Там два элемента и вход выбора направления. Внутри ПЛИС тристабильных шин нет все делается на мультиплексорах.
Давайте в личку Вашу почту, сброшу полный китайский проект. Там около 5Мб.
__________________
misterdi<@>i.ua
Последний раз редактировалось MisterDi; 19.09.2012 в 09:33.
|
|
|
|
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
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: Портативные осцилографы - своими руками
Да. Стоят два регистра последовательно-параллельно, данные сдвигаются каждый такт, а импульс разрешения записи в ОЗУ проходит через 1 такт. В принципе расчет достаточно простой. Есть поток от АЦП с заданной полосой (100Мбайт/с) Для того, чтобы уменьшить тактовую частоту, нужно увеличить разрядность шины данных, по аналогии с обычной трубой (чем больше диаметр, тем ниже скорость для постоянного потока). Когда-то была мысль попробовать сделать захват 8-разрядных данных для STM-32 напрямую в память через 32-разрядній порт, с использованием 4-х регистров, но пока не созрел.
__________________
misterdi<@>i.ua
Последний раз редактировалось MisterDi; 19.09.2012 в 17:10.
|
|
|
|
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
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: Портативные осцилографы - своими руками
То, что вы обвели - процесс переключения выходов. Показывает все честно Думаю Вам есть смысл ram_wr, инкремент адреса и тактирование АЦП делать по отрицательному фронту основной тактовой частоты. Это уберет неопределенность состояния входов ОЗУ в момент записи и даст нормальные данные на выходе. По-моему в качестве ram_wr я использовал младший разряд счетчика адреса.
Цитата:
|
тут есть BB-код спойлера ?
|
насколько помню - нет. Большие исходники делают аттачем.
__________________
misterdi<@>i.ua
Последний раз редактировалось MisterDi; 19.09.2012 в 22:54.
|
|
|
|
19.09.2012, 22:53
|
|
Прописка
Регистрация: 19.12.2009
Сообщений: 120
Сказал спасибо: 22
Сказали Спасибо 35 раз(а) в 22 сообщении(ях)
|
Re: Портативные осцилографы - своими руками
Сообщение от MisterDi
|
То, что вы обвели - процесс переключения выходов. Показывает все честно Думаю Вам есть смысл ram_wr переключать по отрицательному фронту основной тактовой частоты. Это уберет неопределенность состояния входов ОЗУ в момент записи и даст нормальные данные на выходе.
|
тогда получается весь проект синхронизировать по @(negedge clk) так как квартус не позволит использовать отрицательный и положительный фронт одного сигнала в проекте..
или это как то обходиться ?
|
|
|
|
19.09.2012, 23:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: Портативные осцилографы - своими руками
То, что синхронизироваться можно по любому фронту - это однозначно, т.к. при схематическом вводе такты через инвертор пропускаются без каких-либо вопросов. Похоже тут мы получаем необходимость второго модуля и приходим к реализации концепции параллельной работы . Знаю, что идеологически правильно весь проект делать на языке описания аппаратуры, но пока не не могу привыкнуть к текстовым описаниям, поэтому делаю смешанные проекты.
__________________
misterdi<@>i.ua
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:57.
|
|