Перейти к содержанию
    

Кто может помочь или выполнить(желательно) это задание?

Сам сколько не пытался реализовать ,не удалось,мало опыта. :crying: :wacko:

 

Разработка схемы вычисления Sin(x)

Блок должен выдавать значение функции Sin(x). Разрядность входных данных и

результата следующая:

a) Вход 8 разрядов, выход 8 разрядов

B) Вход 4 разряда, выход 16 разрядов

c) Вход 16 разрядов, выход 4 разряда

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если без хитростей, то

а - таблица

б - таблица

в - выбор из 16 диапазонов входных значений. по одному диапазону для каждого выходного значения

 

маленькие хитрости:

учет квадранта входного значения позволит сократить размер таблиц или кол-во сравнений.

 

Успехов

 

Можно добавить 16 - 16, и вполне получится вопрос для собеседования на конкурс "творчество юных".

 

Разработка схемы вычисления Sin(x)

Блок должен выдавать значение функции Sin(x). Разрядность входных данных и

результата следующая:

a ) Вход 8 разрядов, выход 8 разрядов

b ) Вход 4 разряда, выход 16 разрядов

c ) Вход 16 разрядов, выход 4 разряда

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поищите в гугле по ключевым словам CORDIC Verilog code. Найдётся несколько проектов, останется лишь слегка доделать и можно тащить преподу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто может помочь или выполнить(желательно) это задание?

Сам сколько не пытался реализовать ,не удалось,мало опыта. :crying: :wacko:

Просто любопытно, где такие задания дают и кто? Преподаватель?

 

bugdesigner советует взять CORDIC на Verilog - а где его можно взять? Мне тоже надо, когда искал - найти не удавалось. Пока что использую кору от Xilinx.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

bugdesigner советует взять CORDIC на Verilog - а где его можно взять? Мне тоже надо, когда искал - найти не удавалось. Пока что использую кору от Xilinx.

генератор кордиков выкладывал на форуме + статья по кордику выкладывалась на этом форуме раз 10, на моей памяти :) по ней делать - 30 минут максимум.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пользуйся. Мож преподу покатит)))

module sine_cos(clk, reset, en, sine, cos);
  input clk, reset, en;
  output [7:0] sine,cos;
  reg [7:0] sine_r, cos_r;
  assign      sine = sine_r + {cos_r[7], cos_r[7], cos_r[7], cos_r[7:3]};
  assign      cos  = cos_r - {sine[7], sine[7], sine[7], sine[7:3]};
  always@(posedge clk or negedge reset)
    begin
        if (!reset) begin
            sine_r <= 0;
            cos_r <= 120;
        end else begin
            if (en) begin
                sine_r <= sine;
                cos_r <= cos;
            end
        end
    end
endmodule // sine_cos

post-78536-1463563473_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пользуйся. Мож преподу покатит)))

module sine_cos(clk, reset, en, sine, cos);
  input clk, reset, en;
  output [7:0] sine,cos;
  reg [7:0] sine_r, cos_r;
  assign      sine = sine_r + {cos_r[7], cos_r[7], cos_r[7], cos_r[7:3]};
  assign      cos  = cos_r - {sine[7], sine[7], sine[7], sine[7:3]};
  always@(posedge clk or negedge reset)
    begin
        if (!reset) begin
            sine_r <= 0;
            cos_r <= 120;
        end else begin
            if (en) begin
                sine_r <= sine;
                cos_r <= cos;
            end
        end
    end
endmodule // sine_cos

объяснение математики с реализацией на VHDL :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пользуйся. Мож преподу покатит)))

Интересное решение, возможно, самое простое и экономное.

Приращение здесь вычисляется через производную.

Это Ваше собственное изобретение, или есть еще первоисточники по этому методу, которые можно еще почитать?.

 

Maverick, спасибо за ссылку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересное решение, возможно, самое простое и экономное.

Это Ваше собственное изобретение, или есть еще первоисточники по этому методу, которые можно еще почитать?.

первый вроде спросил на форуме Victor®

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

первый вроде спросил на форуме Victor®

 

вот нашел вроде автора

Да, я читал эту математику. Потом в нете наткнулся на приведенный мной пример. Я его разбирал, менял частоту и прочее (опять же подглядывая в ссылку на математику). Занимательно все это. )))

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отлично, да. Как sin(x)-то вычислить этим агрегатом? x куда прикручивать?

 

Пользуйся. Мож преподу покатит)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отлично, да. Как sin(x)-то вычислить этим агрегатом? x куда прикручивать?

возможно здесь ответ

 

Так как мы генерим последовательность cos (n*h), то записав ее как cos(2*pi*F*n*dt), мы получаем :

 

n*h = 2*pi*F*n*dt

 

Откуда: F = h/(2*pi*dt) = arccos((2-1/64)/2)/(2*pi*dt)

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отлично, да. Как sin(x)-то вычислить этим агрегатом? x куда прикручивать?

X - это амплитуда. Изменяй кол-во разрядов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Круто, да.. разрядов чего?

 

давайте проще

мне нужно вычислить y=sin(pi/e). какие мои действия?

 

1. квантую аргумент

2. ?

 

X - это амплитуда. Изменяй кол-во разрядов.

 

возможно здесь ответ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

давайте проще

мне нужно вычислить y=sin(pi/e). какие мои действия?

 

1. квантую аргумент

думаю пункт 2 будет:

- в always делаем компаратор с заданным числом, то через N тактов получите результат (возможно очень приблизительный)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...