На главную страницу сайта
· Наш магазин · Объявления · Рейтинг · Статьи · Частоты · Копилка · Аэродромы · Live!
· Файлы · Диапазоны · Сигналы · Музей · Mods · LPD-форум · Клуб · Радиостанции
На сайте: гостей - 51,
участников - 7 [ grecka_kiler, AlexEX, Хайо, DangerAlex, HDD, gladiator, ветеран]
 · Начало · Опросы · События · Статистика · Поиск · Регистрация · Правила · FAQ · Галерея ·
 Форум —› Программное обеспечение —› Altera Quartus VERILOG 
Новая линейка радиостанций Hytera в нашем магазине


Hytera TC-320
руб.

Hytera TC-508
руб.

Hytera TC-580
руб.

Hytera PD-355
руб.

Hytera X1E
руб.
 Страница:  ««  1  2  3  4  5  »»Поиск в теме
Автор Сообщение
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 13 Дек 2011 17:21:09 #  

Когда пишете на языках HDL, забудьте о __программировании__. Вы пишете не программу, Вы описываете схему - триггеры, комбинаторную логику, регистры, памяти и т.п. Соответственно, когда что-то пишете на HDL лучше представлять себе эту логическую схему либо в голове, либо иметь ее заранее разрисованной на бумажке. Еще раз - на HDL вы не программируете, на HDL вы описываете логическую схему.
Это я знаю и подумываю от таком: http://en.wikipedia.org/wiki/ASUS_EeeBox_PC
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 14 Дек 2011 04:48:05 · Поправил: RadioKoteg (14 Дек 2011 05:12:49) #  

есть BCD 9 полу байт

МГц Х Х Х
кГц Х Х Х
Гц Х Х Х

есть "шаг частоты" длиной до 11 бит

Нужно сделать инкремент и декремент частоты с заданным шагом, перевод с бисиди в бинарный (это около 30 битов) и назад в бисиди не допустимо..

Собственно подскажите, меня интересуют арифметические операции с числами BCD, сложение и вычитание.

Есть идеи?
Реклама
Google
petr0v
Участник
Offline2.3
с мая 2010
Balakhna
Сообщений: 412

Дата: 14 Дек 2011 13:44:11 #  

Как в столбик на бумажке вручную складывают, основа - комбинационная схема сумматора одного разряда, у неё на входе две шины суммируемых цифр и бит переноса, на выходе шина цифры результата и бит переноса. Из таких схем составляем сумматор на всё слово. Но обсчитывать желательно последовательно за несколько тактов, так как быстродействие полной комбинационной схемы не нужно, она большую часть времени будет простаивать тратя ресурсы ПЛИС впустую, это и преобразования в BCD и обратно касается.
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 14 Дек 2011 15:15:52 #  

+6 по переносу бита при сложении если число больше 9 ти, и при вычитании наоборот наверное так.
DeNishe
Участник
Offline1.1
с фев 2005
Украина
Сообщений: 48

Дата: 14 Дек 2011 18:29:09 #  

Гугл его знает

module DIGITADD(
input [3:0] IN_A,
input [3:0] IN_B,
input CIN,
output COUT,
output [3:0] SUM
);

reg [4:0] s2;

assign SUM = s2[3:0];
assign COUT = s2[4];

always @ ( * )
begin
s2 = IN_A + IN_B + CIN;
if (s2 > 9)
begin
s2 = s2 + 6;
end
end
endmodule

На первый взгляд, правильно.
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 17 Дек 2011 07:43:39 #  

Сложение в моем случае вышло так:





// Частота
reg [3:0] FMHz_1=0;
reg [3:0] FMHz_2=0;
reg [3:0] FMHz_3=0;
reg [3:0] FkHz_1=0;
reg [3:0] FkHz_2=0;
reg [3:0] FkHz_3=0;
reg [3:0] FHz_1=0;
reg [3:0] FHz_2=0;
reg [3:0] FHz_3=0;


//Шаг частоты перестройки
reg [3:0] Step_FMHz_1=0;
reg [3:0] Step_FMHz_2=0;
reg [3:0] Step_FMHz_3=0;
reg [3:0] Step_FkHz_1=0;
reg [3:0] Step_FkHz_2=0;
reg [3:0] Step_FkHz_3=0;
reg [3:0] Step_FHz_1=0;
reg [3:0] Step_FHz_2=0;
reg [3:0] Step_FHz_3=1;

reg [4:0] s2; //бит переноса


s2[4]=0;
s2 = FHz_3 + Step_FHz_3 + s2[4];
if (s2 > 9) s2 = s2 + 6;
FHz_3 = s2[3:0];

s2 = FHz_2 + Step_FHz_2 + s2[4];
if (s2 > 9) s2 = s2 + 6;
FHz_2 = s2[3:0];

s2 = FHz_1 + Step_FHz_1 + s2[4];
if (s2 > 9) s2 = s2 + 6;
FHz_1 = s2[3:0];

s2 = FkHz_3 + Step_FkHz_3 + s2[4];
if (s2 > 9) s2 = s2 + 6;
FkHz_3 = s2[3:0];

s2 = FkHz_2 + Step_FkHz_2 + s2[4];
if (s2 > 9) s2 = s2 + 6;
FkHz_2 = s2[3:0];

s2 = FkHz_1 + Step_FkHz_1 + s2[4];
if (s2 > 9) s2 = s2 + 6;
FkHz_1 = s2[3:0];

s2 = FMHz_3 + Step_FMHz_3 + s2[4];
if (s2 > 9) s2 = s2 + 6;
FMHz_3 = s2[3:0];

s2 = FMHz_2 + Step_FMHz_2 + s2[4];
if (s2 > 9) s2 = s2 + 6;
FMHz_2 = s2[3:0];

s2 = FMHz_1 + Step_FMHz_1 + s2[4];
if (s2 > 9) s2 = s2 + 6;
FMHz_1 = s2[3:0];



Все заработало.

Не соображу с вычитанием как быть?
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 17 Дек 2011 08:21:45 #  

A four-bit adder/subtractor. If Sign = 0 then S = A + B. If Sign = 1 then S = A – B.


//AddSub.v
//4-bimodule addsub(aIn, bIn, sum, cOut, sign);
t adder/subtractor
input sign;
input [3:0]aIn, bIn;
output [3:0]sum;
output cOut;
reg [3:0]sum;
reg [3:0]bExOr;
reg cOut;
// always @(aIn or bIn or sign)
begin
bExOr = bIn ^ {4{sign}};
{cOut, sum} = aIn + bExOr + sign;
end
// endmodule



А с BCD как быть?
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 18 Дек 2011 05:32:22 #  

Вычитание:


s2[4]=0;

s2 = FHz_3 - Step_FHz_3 - s2[4];
if (s2 > 9) s2 = s2 - 6;
FHz_3 = s2[3:0];

s2 = FHz_2 - Step_FHz_2 - s2[4];
if (s2 > 9) s2 = s2 - 6;
FHz_2 = s2[3:0];

s2 = FHz_1 - Step_FHz_1 - s2[4];
if (s2 > 9) s2 = s2 - 6;
FHz_1 = s2[3:0];

s2 = FkHz_3 - Step_FkHz_3 - s2[4];
if (s2 > 9) s2 = s2 - 6;
FkHz_3 = s2[3:0];

s2 = FkHz_2 - Step_FkHz_2 - s2[4];
if (s2 > 9) s2 = s2 - 6;
FkHz_2 = s2[3:0];

s2 = FkHz_1 - Step_FkHz_1 - s2[4];
if (s2 > 9) s2 = s2 - 6;
FkHz_1 = s2[3:0];

s2 = FMHz_3 - Step_FMHz_3 - s2[4];
if (s2 > 9) s2 = s2 - 6;
FMHz_3 = s2[3:0];

s2 = FMHz_2 - Step_FMHz_2 - s2[4];
if (s2 > 9) s2 = s2 - 6;
FMHz_2 = s2[3:0];

s2 = FMHz_1 - Step_FMHz_1 - s2[4];
if (s2 > 9) s2 = s2 - 6;
FMHz_1 = s2[3:0];


Можно конечно и в модуль, но так как оно в одном месте решил пока так.
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 18 Дек 2011 05:52:58 #  

С восстановлением регистров тоже разобрался, оказывается там приличное время нужно чтобы все устаканилось, в общем ввел я счетчик таймер и по задержке в стиле типа потом восстанавливаю нужные регистры. А то выходило так что я беру в правую руку яблоко, перекладываю с правой руки яблоко в левую руку, потом в правую руку беру грушу и тут происходили чудеса у нас в левой руке груша.. В общем причина понятна, регистры не устаканились.. Собственно этот нюанс я понял. Ну а стиль написания, пока так, потом когда то надо будет перейти на визуальный язык иначе я не справлюсь с сетевыми примочками аудио. Возможно я перейду на NIOS который отдельно прошитый на плис ALTERA МАХ.
В общем я набью пальцы и мозги VERILOGOM что бы не теряться потом с визуальной среде..
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 24 Дек 2011 08:21:25 · Поправил: RadioKoteg (24 Дек 2011 08:29:23) #  

NIOS-процессором

Nios II по-русски http://naliwator.narod.ru/nios_II.html#00
в лет 70 дойду до пункта "Заключение" Мда, сколько же это надо иметь серого вещества что бы прочитать и усвоить хотя бы на 10 процентов..
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 26 Дек 2011 19:06:36 #  

Подскажите ALTERA DE2 по NIOS процессору наверное в в среде QUATUS или как там, с чего начать, рабочий каркас или пример. Вообще не могу понять с чего начать. Спасибо за полезные советы.
Windk
Участник
Offline3.3
с апр 2007
Тюмень
Сообщений: 3686

Дата: 26 Дек 2011 19:23:21 #  

RadioKoteg

подскажите, а почему с фпга на процессор стали глядеть..а то я в след году надумал циклон4 взять, к вам присоединиться, а вы уже в др сторону..
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 26 Дек 2011 19:29:14 #  

Windk упс.. Да я не знаю еще в какую сторону идти.. Хочу посмотреть что такое NIOS..
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 26 Дек 2011 19:35:27 · Поправил: RadioKoteg (26 Дек 2011 19:38:08) #  

Я вкурил что ниос процессор вгружаеться с FPGA и занимает очень львиную долю ресурсов. В общем наверное надо вернуться как было и начать проэкт с начала, и начать с нормального описания клавиатуры в виде отдельного модуля и в виде нормальных понятных скэн кодов клавы, а то действительно я как посмотрел что я натворил в FPGA в виде схем так мне с пятницы по сегодня снились страшные сны..

Мне наверное проще мыслить без всяких там ниос процессоров. Да и перспектива обработать там чегот о в реал тайме, типа построить SDR на ПЧ и все АМ ЧМ SSB детекторы вгрузить на FPGA..
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 27 Дек 2011 14:42:34 #  

Windk
Оставляю как есть что я "понаписывал", оно работает и еще отлично работает. Переношусь в шаг "намбер тву", а именно это работа с флешкой и звуковой картой то есть наоборот, задача забрать с звуковой карты поток и его влить на флешку в виде байтовой последовательности PCM глубиной 16 бит (24???) и обратное читать это все (необязательно).
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 27 Дек 2011 14:56:16 #  

Windk

к вам присоединиться,

Я понял что вы поняли идею SDR на болванке DE. Я конечно присоединяюсь тоже к этой идеи, но с меня "кодер" никакой, хотя уже руки чешутся "Альтеру на 4 том циклоне" и к ней АЦП и ЦАП приделать, это же насколько близко к "FULL DDS трансивер(просто приемник)", надо бы что бы народ это осознал, идея действительно стоит игры при условии что будет человек который напишет логику в FPGA(да хотябы даст толчек), собственно платы готовые к ней и относительно стандартизованные своей структурой начинками в виде различных вкусных интерфейсов(юсби компорты звуковая плата сд карточка даже вжа контроллер который можно при 10 битах использовать по левому направлению..) к плате надо только АЦП и (ЦАП если трансивер) а для преобразователей в квадратуру то даже звуковой карты хватит и синтезатора DDS которая эта архитектура "уделает" флекс радио IMHO.
Windk
Участник
Offline3.3
с апр 2007
Тюмень
Сообщений: 3686

Дата: 27 Дек 2011 16:22:57 #  

уделывать флексы будет сложно. и не для того я хочу фпга. Мне просто сама по себе эта архитектура привлекла, не программировать в привычном понимании. а описывать схемы.
Ну а что бы не просто так светиками мигать, мне интересен именно захват с АЦП. декодирование, демодуляции. Для начала можно вообще просто сделать осциллограф, а потом уже дальше двигаться, попробовать подать с хорошего отдельного УВЧ сигнал на АЦП (не обязательно пока до УКВ), и попробовать демодулировать. вывести спектр на грф индикатор. сделать настройку - как выделение полосы, сделать скан на основе появления сигнала в той или иной части спектра - это просто интересно посмотреть. как такое без_РС радио в эксплуатации, ибо ничего такого пока нет. Понятно что это DDC радио уже не уложиться в 300, но это уже другие цели, изучение фпга на конкретном примере DDC приема..а там видно будет, возможно ли построение DDC приемника за 300.
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 27 Дек 2011 16:35:39 #  

уделывать флексы будет сложновсе зависит от описания схем, да и вообще кто нам не дает с боку приделать процессор для вычисления синусов и косинусов FFT?
Windk
Участник
Offline3.3
с апр 2007
Тюмень
Сообщений: 3686

Дата: 27 Дек 2011 16:42:42 #  

ну это потом..походу.. для начала вобще купить надо )
petr0v
Участник
Offline2.3
с мая 2010
Balakhna
Сообщений: 412

Дата: 27 Дек 2011 17:20:38 #  

Windk

А что покупать то? Готовых китов заточенных под SDR нету, значит нужно разрабатывать принципиальную схему и плату, заказывать производство и монтаж.
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 27 Дек 2011 17:31:02 · Поправил: RadioKoteg (27 Дек 2011 17:32:35) #  

petr0v А что покупать то? Готовых китов заточенных под SDR нету
вот http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=139&No=593 и ничего поять не надо, разве что распоять АЦП и соединить на PIO. А для крутизны фулл инклюзет http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=139&No=502
petr0v
Участник
Offline2.3
с мая 2010
Balakhna
Сообщений: 412

Дата: 27 Дек 2011 17:49:24 #  

RadioKoteg

Там только диодами поморгать и с PC-связаться, вот это разве что распоять АЦП целая пропасть на самом деле, из опыта могу сказать что можно развести плату абы как неудачно и будет куча наводок, полная неработоспособность, какой бы SDR цифровой не был всё равно у него остаётся аналоговая часть - МШУ, VGA, фильтры, аттенюаторы, на соплях это всё вешать что ли вместе с ЦАП-АЦП и тактовым генератором, питанием и прочим?
Windk
Участник
Offline3.3
с апр 2007
Тюмень
Сообщений: 3686

Дата: 27 Дек 2011 18:05:01 #  

А что покупать то?


ДЕ болванку и граф индикатор.

целая пропасть на самом деле,

да ничо там не пропасть, все делается как 2 байта переслать, обычный сдр паяется на коленке на простой плате, ОУ, квадратурный..и на выходе даже регулировки и балансировки ОУ не требуется, а толку больше чем от ПРО3. И потом, да хрен с ним с помехами, пусть они будут, даже интересней будет.
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 27 Дек 2011 18:13:10 #  

и с PC-связаться

Какие вы разносторонние, я не знаю что уже и делать. Моя первоначальная цель мигать диодами и засылать частоту в синтезатор, но походу возникли другие идеи и даже как бы на первый взгляд перспективные, я считаю что надо правильно развязать АЦП.. Собственно проверять надо все.
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 27 Дек 2011 18:14:31 #  

ДЕ болванку и граф индикатор.
АЦП еще.
Windk
Участник
Offline3.3
с апр 2007
Тюмень
Сообщений: 3686

Дата: 27 Дек 2011 18:34:43 #  

АЦП еще

это я у Ад по лендлизу возьму :)

а синтез и светики - это и аттини за 80 руб легко сделает, тем более готовые есть примеры.
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 28 Дек 2011 01:15:22 #  

обнаружил в квартусе Qsys - Altera’s System Integration Tool пытаюсь вникнуть в суть процесса.
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 30 Дек 2011 15:38:43 · Поправил: RadioKoteg (31 Дек 2011 03:28:59) #  

Сделал аудио, захват и вывод, посредине дата, с ней уже на усмотрение. Размышляю как эту дату кидать на SD флэшку.
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 31 Дек 2011 03:26:24 · Поправил: RadioKoteg (31 Дек 2011 03:29:39) #  

С флешкой отменяется до полного раскуривания аудио. Решил вывести на светодиоды уровень сигнала:

wire [15:0] audio_inL, audio_inR;
reg [15:0] audio_outL,audio_outR;

reg [15:0] Level_R;
reg [15:0] Level_L;

always @(negedge AUD_DACLRCK)
begin
audio_outR <= audio_inR;


if (audio_inR >=65535) Level_R = 16'b1111111111111111; else
if (audio_inR >=32768) Level_R = 16'b0111111111111111; else
if (audio_inR >=16384) Level_R = 16'b0011111111111111; else
if (audio_inR >=8192) Level_R = 16'b0001111111111111; else
if (audio_inR >=4096) Level_R = 16'b0000111111111111; else
if (audio_inR >=2048) Level_R = 16'b0000011111111111; else
if (audio_inR >=1024) Level_R = 16'b0000001111111111; else
if (audio_inR >=512) Level_R = 16'b0000000111111111; else
if (audio_inR >=256) Level_R = 16'b0000000011111111; else
if (audio_inR >=128) Level_R = 16'b0000000001111111; else
if (audio_inR >=64) Level_R = 16'b0000000000111111; else
if (audio_inR >=32) Level_R = 16'b0000000000011111; else
if (audio_inR >=16) Level_R = 16'b0000000000001111; else
if (audio_inR >=8) Level_R = 16'b0000000000000111; else
if (audio_inR >=4) Level_R = 16'b0000000000000011; else
if (audio_inR >=2) Level_R = 16'b0000000000000001;
end


always @(posedge AUD_DACLRCK)
begin
audio_outL <= audio_inL;

if (audio_inL >=65535) Level_L = 16'b1111111111111111; else
if (audio_inL >=32768) Level_L = 16'b0111111111111111; else
if (audio_inL >=16384) Level_L = 16'b0011111111111111; else
if (audio_inL >=8192) Level_L = 16'b0001111111111111; else
if (audio_inL >=4096) Level_L = 16'b0000111111111111; else
if (audio_inL >=2048) Level_L = 16'b0000011111111111; else
if (audio_inL >=1024) Level_L = 16'b0000001111111111; else
if (audio_inL >=512) Level_L = 16'b0000000111111111; else
if (audio_inL >=256) Level_L = 16'b0000000011111111; else
if (audio_inL >=128) Level_L = 16'b0000000001111111; else
if (audio_inL >=64) Level_L = 16'b0000000000111111; else
if (audio_inL >=32) Level_L = 16'b0000000000011111; else
if (audio_inL >=16) Level_L = 16'b0000000000001111; else
if (audio_inL >=8) Level_L = 16'b0000000000000111; else
if (audio_inL >=4) Level_L = 16'b0000000000000011; else
if (audio_inL >=2) Level_L = 16'b0000000000000001;

end


assign LEDR[15:0] = (Level_R & Level_L);


Индикатор видно что скачет в такт уровня сигнала но последовала проблема, подсвечиваются все индикаторы, мое подозрение то ли что то опять не успевает, или же меняется значение по условию когда сигнал posedge значение audio_inR становится FFFF и наоборот когда забирается по сигналу negedge значение audio_inL становиться FFFF.. В общем я не могу понять что творится.

Еще один вопрос, как в этом всем делать отладку?

Исходники текущей версии: http://doris.kiev.ua/RS/UKV_001/AlteraDE3/MY_UKV_074.RAR
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 31 Дек 2011 06:31:20 · Поправил: RadioKoteg (31 Дек 2011 06:33:21) #  

добрался сюда
//Audio Config Data ADDR _ Data
Dummy_DATA : LUT_DATA <= 16'b00000000_00000000;
SET_LIN_L : LUT_DATA <= 16'b00000000_00011010;// L-line, moderately high gain
SET_LIN_R : LUT_DATA <= 16'b00000010_00011010;// R-line, modernately high gain
SET_HEAD_L : LUT_DATA <= 16'b00000100_01111011;// L-phone out, high volume
SET_HEAD_R : LUT_DATA <= 16'b00000110_01111011;// R-phone out, high volume
A_PATH_CTRL : LUT_DATA <= 16'b00001000_00010010;// Line->ADC, DAC on, no bypass or sidetone
D_PATH_CTRL : LUT_DATA <= 16'b00001010_00000000;// deemph to 48kHz
POWER_ON : LUT_DATA <= 16'b00001100_00000000;// all on
SET_FORMAT : LUT_DATA <= 16'b00001110_00000001;//MSB first left-justified, slave mode
SAMPLE_CTRL : LUT_DATA <= 16'b00010000_00000010;//MSB first left-justified, slave mode
SET_ACTIVE : LUT_DATA <= 16'b00010010_00000001;//Activate



и по этому даташиту: http://www.wolfsonmicro.com/products/codecs/WM8731/
Реклама
Google
 Страница:  ««  1  2  3  4  5  »» 

Создавать сообщения могут только зарегистрированные участники форума.
Войти в форум :: » Логин » Пароль
Начало
Средства связи, рации. Купить радиостанции Motorola, Yaesu, Vertex, приемники, антенны.
Время загрузки страницы (сек.): 0.056; miniBB ®