Vehfl
Участник-
Постов
14 -
Зарегистрирован
-
Посещение
Репутация
0 Обычный-
Запись в сдвиговый регистр
Vehfl ответил Vehfl тема в Языки проектирования на ПЛИС (FPGA)
Не понял этот кусок кода. Мне для работы алгоритма надо ставить в нуль первые пятнадцать разрядов регистра. Пришедшие данные на диаграмме в переменой In. Самый первый бит пришедших данных не входит в регистр, начинает входить со второго. -
Запись в сдвиговый регистр
Vehfl опубликовал тема в Языки проектирования на ПЛИС (FPGA)
Пишу описание декодера, работающего в нескольких режимах: 0 - начальная установка, 1 - запись в регистр, 2 - считывание. Режим записи длится ровно столько тактов сколько бит должно войти в регистр. В режиме записи в сдвиговый регистр не берется первый пришедший бит, все что идет дальше заходит в регистр. Есть ли способ это исправить или можно только внести дополнительную задержку чтобы первый бит приходил во второй такт режима считывания? Ниже код и временная диаграмма. always @(posedge clk) begin if (reset) begin mode <= 0; cnt <= 0; shiftreg <= 0; end else case (mode) 0: begin mode <= 1; shiftreg[0:14] <= 0; end 1: begin cnt <= cnt + 1; shiftreg <= {In, shiftreg[0:271]}; if (cnt==257) begin mode <= 2; cnt <= 0; end else mode <= 1; end -
Источник импульсов
Vehfl ответил Vehfl тема в Работаем с ПЛИС, области применения, выбор
Я так понимаю, это программа является решением моим. А могли бы Вы объяснить зачем в строке, описывающей PULSE_WIDTH надо делить на 1000. И еще, я читал $clog2 берет логарифм по основанию е. Я так понимаю, в моем же случае нужен логарифм по основанию 2? -
Источник импульсов
Vehfl опубликовал тема в Работаем с ПЛИС, области применения, выбор
Не опытен в разработки на ПЛИС и поэтому прошу совета. Мне нужно разработать источник импульсов такого вида: Прямоугольный импульс длится время t, следующий такой импульс появляется через 19*t. t=6 нс. Пытался сделать такой генератор с помощью блоков System Generator в Simulink. Блок counter считывает содержимое памяти (вектор 100000000000000000000) с заданной частотой. Импульсы выводил на пин. После загрузки получившейся прошивки на плату измерительный прибор показывает не то что надо. Возможно я не правильно реализую то, что мне нужно? Или может выводить на пин не целесообразно? Как лучше сделать такой генератор? -
LDPC код из стандарта DVB-S2
Vehfl ответил Vehfl тема в Алгоритмы ЦОС (DSP)
Тогда был бы признателен если вы как-нибудь передали мне блоки закодированные, например на почту. Вы могли бы послать мне их? -
LDPC код из стандарта DVB-S2
Vehfl ответил Vehfl тема в Алгоритмы ЦОС (DSP)
Спасибо Думал что может в кодере из matlab тоже ошибка. У вас нету сведений о его правильности? -
LDPC код из стандарта DVB-S2
Vehfl ответил Vehfl тема в Алгоритмы ЦОС (DSP)
Был бы признателен если бы вы предоставили закодированные блоки с исходными сообщениями для нескольких скоростей скажем для 1/2,2/5 и 1/3. У нас есть подозрения на неправильную работу кодера. -
LDPC код из стандарта DVB-S2
Vehfl ответил Vehfl тема в Алгоритмы ЦОС (DSP)
Да, это было бы прекрасно иметь наглядный алгоритм декодирования. -
LDPC код из стандарта DVB-S2
Vehfl ответил Vehfl тема в Алгоритмы ЦОС (DSP)
Не могли бы поделиться алгоритмом декодирования который использовали. Спасибо. -
LDPC код из стандарта DVB-S2
Vehfl ответил Vehfl тема в Алгоритмы ЦОС (DSP)
Пожалуйста можете поподробней и что вы имеете ввиду под реализацией с фиксированной точкой? -
LDPC код из стандарта DVB-S2
Vehfl ответил Vehfl тема в Алгоритмы ЦОС (DSP)
Случайно не в матлабе моделировали? У меня в матлабе при отношении С/Ш=0, BER=0. Ведь физически такого не может быть? Код программы в матлабе: format long clear all; r=2/3 H = dvbs2ldpc®; %e=0 % spy(H); % Visualize the location of nonzero elements in H. % Construct a default LDPC encoder object henc = fec.ldpcenc(H); for SNRdB = 0 for n=1:100; % Generate a random binary message msg = randint(1,henc.NumInfoBits,2); % Encode the message codeword = encode(henc, msg); % Verify the parity checks (which should be a zero vector) paritychecks = mod(henc.ParityCheckMatrix * codeword', 2); hdec = fec.ldpcdec(H); % Construct a BPSK modulator object modObj = modem.pskmod('M',2,'InputType','Bit'); % Modulate the signal (map bit 0 to 1 + 0i, bit 1 to -1 + 0i) modulatedsig = modulate(modObj, codeword); % Noise parameters sigma = sqrt(10^(-SNRdB/10)); % Transmit signal through AWGN channel receivedsig = awgn(modulatedsig, SNRdB, 0); % Signal power = 0 dBW % % Visualize received signal % scatterplot(receivedsig) % Construct a BPSK demodulator object to compute % log-likelihood ratios demodObj = modem.pskdemod(modObj,'DecisionType','LLR', ... 'NoiseVariance',sigma^2); % Compute log-likelihood ratios (AWGN channel) llr = demodulate(demodObj, receivedsig); % Decode received signal decodedmsg = decode(hdec, llr); N_err=nnz(decodedmsg-msg); % % Actual number of iterations executed % disp(['Number of iterations executed = ' ... % num2str(hdec.ActualNumIterations)]); % % Number of parity-checks violated % disp(['Number of parity-checks violated = ' ... % num2str(sum(hdec.FinalParityChecks))]); % % Compare with original message % disp(['Number of bits incorrectly decoded = ' ... % num2str(N_err)]) a(n)=N_err; % Общее количество ошибок end BER=sum(a)/(n*henc.NumInfoBits) end BER FER=(nnz(a))/n -
LDPC код из стандарта DVB-S2
Vehfl опубликовал тема в Алгоритмы ЦОС (DSP)
Есть программа на C++ для моделирования кодов LDPC для стандарта DVB-S2, в программе есть матрицы из стандарта, задающие коды, есть модем и канал связи с возможностью установки отношения Eb/No. Для всех кодов кроме скоростей 2/5, 1/3, 1/4 получились приемлимые графики зависимости BER (Bit Error Rate) от Eb/No, сходящиеся с теоретическими из статей. Для скоростей 1/4, 1/3, 2/5 декодер не работает, сам добавляет ошибки даже, если в канале ошибок не было. Может это опечатка в матрицах, взятых из стандарта. Ниже приведен стандарт. Не знаете с чем может быть связано, что не работают три скорости? DVB_S2_en_302307v010201p.pdf -
Про какие именно скорости идет речь? Про те, которые не работают у меня в C++ программе (1/4, 1/3, 2/5)?
-
Моделирование кодов LDPC из стандарта DVB-S2
Vehfl опубликовал тема в Математика и Физика
Мне нужно получить графики зависимости BER (Bit Error Rate) от Eb/N0 , для этого я воспользовался программой, написанной в MATLAB, мною были получены графики для кодов с нормальной длиной кадра со скоростями 9/10, 8/9, 5/6, 4/5, 3/4, для остальных скоростей при отношении Eb/N0=0 BER=0. Параллельно проводил моделирование в программе, написанной на C++. На первый взгляд, в С++ программе все тоже самое что и в MATLAB: канал, модем, матрицы, задающие код. Но в программе, написанной на C++ не работают скорости 1/4, 1/3, 2/5, при выборе этих скоростей даже если не задавать ошибки каналом связи, после декодирования будут появляться ошибки. Буду признателен если поможете, может кто-нибудь получал такие графики.