реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Реализация синуса с помощью алгоритм Codic, Нужна помощь
Boobrilla
сообщение Aug 17 2017, 11:34
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 14-08-17
Пользователь №: 98 790



Всем привет. Всегда было проще разбираться в новом материале с помощью конкретных примеров. Но тут к сожалению пусто (либо я просто не нашел) в плане РАБОЧИХ примеров. По сухой теории сложно заходит. Поэтому пишу сюда в попытке получить помощь. (Сам не совсем новичок в программировании, но в программировании лог. устройств. чуть больше нолика wacko.gif ).
Вот частичка того, что нужно, что самому получилось описать. В большей степени проблема в понимании основного куска кода, где и есть тот алгоритм, который двигает собственно вектор наш.

CODE
CODE
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.numeric_std.all;

entity sinustest is
port(
clk: in STD_LOGIC;
rst: in STD_LOGIC;
dataz : out STD_LOGIC_VECTOR (15 downto 0);
data : out STD_LOGIC_VECTOR (15 downto 0));
);
end sinustest;

architecture Behavioral of sinustest is

type arr_type is array (0 to 16) of std_logic_vector(15 downto 0);
signal Y : arr_type;
signal X : arr_type;
signal Z : arr_type;
signal a : arr_type:=
(
"0011111111111111", "0010010111000111", "0001001111110110", "0000101000100010",
"0000010100010110", "0000001010001100", "0000000101000110", "0000000010100011",
"0000000001010001", "0000000000101001", "0000000000010100", "0000000000001010",
"0000000000000101", "0000000000000011", "0000000000000001", "0000000000000001","0000000000000000"); -- описание сигналов и фазового сдвига на каждый такт

type mode is (functioning1, functioning2);
signal state : mode;

begin
process (clk)
begin
if clk = '1' and clk'event then -- начальное значение (очевидно) по x y. стартовая отсечка вектора
if rst = '1' then
X(0) <= "0011111111111111";
Y(0) <= "0000000000000000";
state <= functioning1;
Z(0) <= "0000000000000000";
....
.... -- та дичь, где должно все происходить
end if;

dataz <= Z(16);
data <= Y (16);

end process;
end Behavioral;


Вот мне бы с "дичью" разобраться, был бы благодарен
Go to the top of the page
 
+Quote Post
Tausinov
сообщение Aug 17 2017, 12:15
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 119
Регистрация: 19-10-13
Пользователь №: 78 795



Цитата(Boobrilla @ Aug 17 2017, 14:34) *
Вот мне бы с "дичью" разобраться, был бы благодарен


А что такое X, Y, Z? И что конкретно вызывает вопросы? Вообще классика генерации гармоники - память со значениями синуса\косинуса и аккумулятор фазы, с помощью которого получается текущий адрес на входе памяти. А дальше уже большой простор для различных вариаций.
Go to the top of the page
 
+Quote Post
Boobrilla
сообщение Aug 17 2017, 12:31
Сообщение #3





Группа: Участник
Сообщений: 11
Регистрация: 14-08-17
Пользователь №: 98 790



Цитата(Tausinov @ Aug 17 2017, 13:15) *
А что такое X, Y, Z? И что конкретно вызывает вопросы? Вообще классика генерации гармоники - память со значениями синуса\косинуса и аккумулятор фазы, с помощью которого получается текущий адрес на входе памяти. А дальше уже большой простор для различных вариаций.


X Y - это координаты вектора (x0 y0 это начальные координаты.)
Z - сдвиг фазы (со знаком)
Конкретно вызывает вопросы реализация алгоритма на VHDL. сама мат часть

Сообщение отредактировал Boobrilla - Aug 17 2017, 12:32
Go to the top of the page
 
+Quote Post
AVR
сообщение Aug 17 2017, 12:32
Сообщение #4


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 101
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Прежде чем делать это в железе, нужна не только теория, но и действующая модель на том, на чем уровень не нулевой. Для кого-то это Матлаб, у меня же в почете Python. Сначала модель, а потом это можно перелохматить в аппаратный код.

Цитата
Конкретно вызывает вопросы реализация алгоритма на VHDL. сама мат часть

Модель в студию. И тогда можно будет претворить алгоритм в "дичь". А то мат части не видно, тогда какие могут быть вопросы, что мы собственно реализуем?

VDHL (фу) обязательно? На Verilog я бы написал из спортивных соображений.
И чем не подошли существующие IP-ядра с кордиками от производителя? Они вполне работают, или тут академические цели?


--------------------
Go to the top of the page
 
+Quote Post
Boobrilla
сообщение Aug 17 2017, 12:36
Сообщение #5





Группа: Участник
Сообщений: 11
Регистрация: 14-08-17
Пользователь №: 98 790



Цитата(AVR @ Aug 17 2017, 13:32) *
Прежде чем делать это в железе, нужна не только теория, но и действующая модель на том, на чем уровень не нулевой. Для кого-то это Матлаб, у меня же в почете Python. Сначала модель, а потом это можно перелохматить в аппаратный код.
Модель в студию. И тогда можно будет претворить алгоритм в "дичь".

VDHL (фу) обязательно? На Verilog я бы написал из спортивных соображений.
И чем не подошли существующие IP-ядра с кордиками от производителя? Они вполне работают, или тут академические цели?

1. Ну напишите на Veriloge (из спортивных соображений). Лишним не будет. 2. существующие взять не проблема, тут как раз таки академическая цель, для разбора написания их самому)
Go to the top of the page
 
+Quote Post
AVR
сообщение Aug 17 2017, 13:11
Сообщение #6


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 101
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Boobrilla @ Aug 17 2017, 15:36) *
1. Ну напишите на Veriloge (из спортивных соображений). Лишним не будет. 2. существующие взять не проблема, тут как раз таки академическая цель, для разбора написания их самому)
Есть возможность предоставить математическую модель алгоритма с комментариями?


--------------------
Go to the top of the page
 
+Quote Post
Boobrilla
сообщение Aug 17 2017, 13:55
Сообщение #7





Группа: Участник
Сообщений: 11
Регистрация: 14-08-17
Пользователь №: 98 790



Цитата(AVR @ Aug 17 2017, 14:11) *
Есть возможность предоставить математическую модель алгоритма с комментариями?


только так( file:///C:/Users/i.yakushevski/AppData/Local/Packages/Microsoft.SkypeApp_kzf8qxf38zg5c/LocalState/Downloads/03-Zakharov-Algoritmy-CORDIC-p-353.pdf (http://kit-e.ru/assets/files/pdf/2011_12_36.pdf))и там есть матч часть
Go to the top of the page
 
+Quote Post
iosifk
сообщение Aug 17 2017, 14:14
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 3 680
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Boobrilla @ Aug 17 2017, 14:34) *
Всем привет. Всегда было проще разбираться в новом материале с помощью конкретных примеров. Вот мне бы с "дичью" разобраться, был бы благодарен


http://kit-e.ru/articles/plis/2011_12_36.php


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Boobrilla
сообщение Aug 17 2017, 14:43
Сообщение #9





Группа: Участник
Сообщений: 11
Регистрация: 14-08-17
Пользователь №: 98 790



Цитата(iosifk @ Aug 17 2017, 14:14) *

По-моему это не VHDL. Разве нет?
Go to the top of the page
 
+Quote Post
Maverick
сообщение Aug 17 2017, 15:10
Сообщение #10


я только учусь...
******

Группа: Модераторы
Сообщений: 3 394
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Boobrilla @ Aug 17 2017, 17:43) *
По-моему это не VHDL. Разве нет?

может такое для понимания ?

или
1
2


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
iosifk
сообщение Aug 17 2017, 15:14
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 3 680
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Boobrilla @ Aug 17 2017, 17:43) *
По-моему это не VHDL. Разве нет?

Верилог... И в чем проблема? Методику автор описал. Обычно если есть вопросы, то пишут автору и спрашивают...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
SemperAnte
сообщение Aug 18 2017, 15:40
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 83
Регистрация: 24-10-10
Из: Санкт-Петербург
Пользователь №: 60 386



Когда-то писал модель на SystemVerilog:
- вычисление как косинуса/синуса, так и амплитуды/фазы;
- выбор последовательной или полностью параллельной архитектуры;
- матлаб bit accurate проверочная модель;
- автоматическая верификация в Modelsim.

https://github.com/SemperAnte/cordic
Go to the top of the page
 
+Quote Post
Boobrilla
сообщение Aug 21 2017, 06:30
Сообщение #13





Группа: Участник
Сообщений: 11
Регистрация: 14-08-17
Пользователь №: 98 790



Цитата(Maverick @ Aug 17 2017, 15:10) *


Спасибо, топ, ни одной из этих ссылок не видел сам)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st November 2017 - 15:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01356 секунд с 7
ELECTRONIX ©2004-2016