• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!

nikellanjilo

Members
  • Публикации

    29
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

О nikellanjilo

  • Звание
    Новенький

Информация

  • Пол
    Мужчина
  • Интересы
    nikellanjilo.ru
  • Город
    Москва

Электроника

  • Стаж в электронике
    3-5 лет
  • Сфера радиоэлектроники
    передающие устройства, микроконтроллеры, ПЛИС
  1. Доброго времени суток, уважаемые форумчане. Вопрос мой в следующем - использую альтиумовскую библиотеку с ПЛИСом XC3S200AN-4FTG256C. Нужно просваппировать пины, просваппировал, но при этом в схематике отображается, что ничего не изменилось. Точнее позиции портов изменились, а номера выводов остались прежними. Подскажите, как лечится проблема? В аттаче - фотографии описываемой проблемы
  2. Cordic Или Профан В Вычислениях На Плис

    Да, все верно, оговорился. А я делал более геморойно... Из тех 10 бит, что мне даны делал так - отсекал первые два бита (так как они указывают по-сути на четверти 360-градусной окружности). И делал так - сначала для целых чисел - а(8)*57 + а(7)*28 + а(6)*13 + ....., затем для нецелых числе с 3 знаками после запятой - а(8)*300 + a(7)*647... Как только они становятся больше 1000 - прибавлял к целой части 1... В итоге получалось вот так... Геморойной, в лоб, но это первое дельное что пришло на ум))
  3. Cordic Или Профан В Вычислениях На Плис

    Я так-то все решил. Вот только теперь другая проблема. Я получаю ответ на выходе из кордика(арктангенса) в виде числа с дробной частью вида хххууууууу (где ххх - три числа, указывающую целую часть вычисления в радианах, а ууууу - дробную часть вычисления в радианах). Как мне эти значения привести к нормальному виду, чтобы на выходе число означало градусы, например angles = 16'd45.
  4. Cordic Или Профан В Вычислениях На Плис

    `include "cordic_v4_0.v" `include "divider_gen.v" `include "atang.v" module anglesssss ( input clk, input [22:0] vektor_of_speed, input [22:0] sat_ab, output reg [18:0] angles ); // model variables //counts reg [3:0] cnt = 0; reg [3:0] cnt1 = 0; reg [3:0] cnt2 = 0; //RAM reg [22:0] a [2:0]; reg [22:0] b [2:0]; reg [23:0] sat_speed_dop; //satellite speed Vsat*cos(alpha) //flags reg full = 1; reg ded_sqrt = 1; //registers reg [47:0] tta; //a1b1+a2b2+a3b3 reg [95:0] q_tta; // tta^2 reg [95:0] kap; //(a1^2 + a2^2 + a3^2)*(b1^2 + b2^2 + b3^2) reg [95:0] delta; // kap - q_tta; reg [24:0] sqrt_out; reg [23:0] atan_in; //IPCORE's variables //square reg nd_sq = 0; wire rdy_sq; wire [24:0] out_sq; //divider wire rdy_dv; reg nd_dv = 0; wire [47:0] quotient; wire [23:0] fractional; //atang wire rdy_tg; reg nd_tg = 0; wire [15:0] phase_out; always @ (posedge clk) begin if (full) begin cnt <= cnt + 1; a[cnt-1] <= vektor_of_speed; b[cnt-1] <= sat_ab; if (cnt==3) begin full <=0; cnt <= 0; end end end always @ (posedge clk) begin if (~full) begin if (ded_sqrt) begin cnt1 <= cnt1 + 1; case (cnt1) 0: begin tta <= $signed(a[0])*$signed(b[0]) + $signed(a[1])*$signed(b[1]) + $signed(a[2])*$signed(b[2]); q_tta <= $signed($signed(a[0])*$signed(b[0]) + $signed(a[1])*$signed(b[1]) + $signed(a[2])*$signed(b[2]))*$signed($signed(a[0])*$signed(b[0]) + $signed(a[1])*$signed(b[1]) + $signed(a[2])*$signed(b[2])); kap <= $signed($signed(a[0])*$signed(a[0]) + $signed(a[1])*$signed(a[1]) + $signed(a[2])*$signed(a[2]))*$signed($signed(b[0])*$signed(b[0]) + $signed(b[1])*$signed(b[1]) + $signed(b[2])*$signed(b[2])); end 1: begin delta <= $signed(kap) - $signed (q_tta); nd_sq <= 1; end 5: nd_sq <= 0; endcase end if (rdy_sq) begin ded_sqrt <= 0; sqrt_out <= out_sq; nd_dv <= 1; end if (rdy_dv) begin nd_tg <= 1; atan_in <= (fractional >> 2); nd_dv <= 0; end if (rdy_tg) begin angles <= (phase_out*360>>16); end end end cordic_v4_0 sqrt( .nd(nd_sq), .clk(clk), .rdy(rdy_sq), .x_in(delta), .x_out(out_sq) ); divider_gen divider( .rfd(), .rdy(rdy_dv), .nd(nd_dv), .clk(clk), .dividend(tta), .quotient(quotient), .divisor(sqrt_out), .fractional(fractional) ); atang arctang( .nd(nd_tg), .clk(clk), .rdy(rdy_tg), .rfd(), .x_in(), .y_in(atan_in), .phase_out(phase_out) ); endmodule
  5. Доброго времени суток, уважаемые форумчане. Вопрос у меня следующего рода - мне нужно считать угол между двумя векторами. Координаты у меня известны. Решил пойти путем нахождения косинуса угла как описано тут. Так вот, для того, чтобы мне вычислить угол (то бишь арккосинус), мне нужно посчитать арктангенс(потому что кордик мне может посчитать только его). В общем начал реализововать - все у меня считается в пределах приемлемых погрешностей (и корни, и деления), но вот с разбросом параметров при вычислении арктангенса беда. Потому что, насколько я понял из даташита для угол(рад) = arctg(y/x), у и х - входные в корку параметры и при этом они меньше 1. Ну, к примеру, нужно мне найти arctg(1/7) (именно эти значения я получаю после выполнения операций, что приведены в ссылке выше) я переделываю под arctg (0.1/0.7). А чтобы мне значения меньше 1 бахнуть по даташиту делаю (для 8-битных данных) 00.000001 (это 1/64, которая примерно равна 0.1) и 00.111000 (0.875). То есть ошибка уже колоссальна. Может существует нормальный метод решения? Я гуглил как умопомраченный - ничего не нашел (((
  6. Verilog - Первые Шаги

    Что означает звездочка в always @ (*) ???
  7. Переключение Пары Биполярных Транзисторов.

    Потому что при открытом транзисторе Т3 ток с коллектора стекает на эмиттер. Схема подключения двух транзисторов - по общей базе.
  8. Cc1101

    Доброго времени суток. Хочу организовать сеть "ардуино - распберии" через cc1101, как принимать и отправлять данные с ардуино по сс1101 я понял. Но никак не найду подробной статьи как осуществить прием-передачу данных с расберри. Понятно, что подсоединяю сс1101 в качестве слэйва по SPI, но вот с коддингом у меня проблема. Подскажите как осуществить идею, может кто еще и кодом поможет... :new_russian:
  9. Центральная Предельная Теорема

    Короче... Делал через Бокса-Мюллера, промоделировал модель в Маткаде... потом код скину
  10. Центральная Предельная Теорема

    module gauss( input [7:0] MO, input [7:0] CKO, input CLK, output reg [7:0] GAUS, output reg [7:0] CH, output reg [7:0] SUMMER ); reg [7:0] change = 8'd12; wire feed = change[7]^change[5]^change[4]^change[3]; reg [7:0] count=8'd0; reg [7:0] sum = 8'd0; always @(posedge CLK) begin change[0]<=feed; change[7:1]<=change[6:0]; if (count<12) begin count<=count+1; sum<=$signed(sum)+$signed(change); end else begin count<=0; sum<=0; SUMMER<=$signed(sum); CH<=$signed(change); GAUS<=$signed(MO)+(($signed(sum)*$signed(CKO))/144); end end endmodule По-сути: 1. Делаю методом Фебоначи на сдвиговом регистре с линейной обратной связью рандом, 2. По ЦПТ - считаю сумму 12 элементов, 3. Перевожу значения чтобы получилось нормальное распределение Но получается бячное что-то... Собственно вот так :thank_you2:
  11. Центральная Предельная Теорема

    Хорошо если так, когда есть матлаб, но как мне все это использовать в железе? На ПЛИСе
  12. Центральная Предельная Теорема

    То есть если поэтапно. 1. Я считаю сумму всех значений, делю на количество - получаю среднее значение (чтобы потом найти дисперсию), 2. Затем нахожу дисперсию каждой величины 3. Нахожу дисперсию суммарную 4. Проделываю снова все для 2хЗНАЧЕНИЙ 5. Нахожу нужный коэффициент, на который буду домножать, чтобы значения укладывались в СКО Так?
  13. Доброго времени суток, уважаемые форумчане. Вопрос состоит в следующем - мне нужно по ЦПТ получить нормальное распределение. Я решил сделать сделать это по ЦПТ (возможно как-то еще можно). Я генерирую рандом, используя сдвиговый регистр с линейной обратной связью, затем суммирую полученные значения. Но вот если посмотреть то, что у меня получается - это далеко не колокол Гауссовский. Собственно вопрос. У меня есть уже сумма из 12 или n слабозависимых величин, какую мне нужно сделать над ними операцию, чтобы получить свой колокол с нужным матожиданием и дисперсией. Собственно - матожидание понятно, просто сумма: матожидание+(выражение) , но что мне нужно сделать в выражении чтобы значения укладывались в заданное мною СКО. Ссылка на ЦПТ в википедии ====>. https://ru.wikipedia.org/wiki/%D0%A6%D0%B5%D0%BD%D1%82%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0
  14. Гбш На Плис

    На данном этапе я не знаю как организовать логику работы моего устройства в плане математики. Я сделал рандом, подключил ip core деления и сделал перенос моих значений в область задонного матожидания с отклонением три сигма, но как бы то ни было- распределение у меня все равно равномерное. Чтобы сделать гуссово нужен еще натуральный логарифм и корень, функцию коссинуса ... То есть еще три корки, две из которых дает сам Ксилинкс, а вот corе-ки логарифма я не нашел еще...))) Так что собственно вот так...
  15. Гбш На Плис

    Вы уже правильно упомянули что корни и логарифмы в ПЛИСе - неблагодарное занятие... буду смотреть библиотеки те... уже зарегистрировался)