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

 
 
> fixed-point, matlab, fpga - помогите разобраться
_Ivan_33
сообщение Aug 28 2014, 11:47
Сообщение #1


fpga designer
****

Группа: Свой
Сообщений: 613
Регистрация: 20-04-08
Из: Зеленоград
Пользователь №: 36 928



Добрый день.

Требуется совет на следующую задачу.

У меня есть алгоритм расчета нескольких величин(алгоритм управления), где присутствуют синусы, косинусы, возведения в квадрат, извлечение корня, деление, а также функции заданные поточечно в том числе двух аргументов...
Мне нужно сделать этот алгоритм в плис, и ксайлинкса и альтеры. Использовать ядра библиотек производителей - лучше не надо...
Для начала мне нужно определиться fixed point или float point арифметику мне использовать. Я изначально выбрал первое, так как если самому все писать с нуля, то очень много времени пройдет.
Потом стал вопрос об ошибке расчета величин из-за погрешности перевода fixed-point из float. Для этих целей я хочу использовать матлаб, чтобы если что в некоторых местах изменять разрядность данных, дабы оптимизировать проект по площади. Допустим я делаю простую модель в симулинке, где есть из источника ramp и она расходится на 2 ветки - double и fixed и умножается на коэффициент усиления. Как мне найти ошибку между результатом double и fixed?


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Ivan_33
сообщение Sep 5 2014, 13:08
Сообщение #2


fpga designer
****

Группа: Свой
Сообщений: 613
Регистрация: 20-04-08
Из: Зеленоград
Пользователь №: 36 928



CODE
`timescale 1 ns / 1 ns

module Calc_X4
(
clk,
reset_n,
clk_enable,
In1,
ce_out,
Out1
);


input clk;
input reset_n;
input clk_enable;
input signed [15:0] In1; // sfix16_En10
output ce_out;
output signed [15:0] Out1; // sfix16_En10


wire enb;
reg signed [15:0] in_0_pipe_reg [0:2]; // sfix16 [3]
wire signed [15:0] in_0_pipe_reg_next [0:2]; // sfix16_En10 [3]
wire signed [15:0] In1_1; // sfix16_En10
wire signed [31:0] Gain4_mul_temp; // sfix32_En24
wire signed [15:0] Gain4_out1; // sfix16_En10
wire signed [15:0] Add6_out1; // sfix16_En10
wire signed [15:0] Saturation4_out1; // sfix16_En10
reg signed [15:0] Saturation4_out1_1; // sfix16_En10


assign enb = clk_enable;

always @(posedge clk)
begin : in_0_pipe_process
if (reset_n == 1'b0) begin
in_0_pipe_reg[0] <= 16'sb0000000000000000;
in_0_pipe_reg[1] <= 16'sb0000000000000000;
in_0_pipe_reg[2] <= 16'sb0000000000000000;
end
else if (enb) begin
in_0_pipe_reg[0] <= in_0_pipe_reg_next[0];
in_0_pipe_reg[1] <= in_0_pipe_reg_next[1];
in_0_pipe_reg[2] <= in_0_pipe_reg_next[2];
end
end

assign In1_1 = in_0_pipe_reg[2];
assign in_0_pipe_reg_next[0] = In1;
assign in_0_pipe_reg_next[1] = in_0_pipe_reg[0];
assign in_0_pipe_reg_next[2] = in_0_pipe_reg[1];



assign Gain4_mul_temp = 21105 * In1_1;
assign Gain4_out1 = Gain4_mul_temp[29:14];



assign Add6_out1 = 10222 - Gain4_out1;



assign Saturation4_out1 = (Add6_out1 > 16'sb0100110000000000 ? 16'sb0100110000000000 :
(Add6_out1 < 16'sb1011010000000000 ? 16'sb1011010000000000 :
Add6_out1));



always @(posedge clk)
begin : out_0_pipe_process
if (reset_n == 1'b0) begin
Saturation4_out1_1 <= 16'sb0000000000000000;
end
else if (enb) begin
Saturation4_out1_1 <= Saturation4_out1;
end
end



assign Out1 = Saturation4_out1_1;

assign ce_out = clk_enable;

endmodule // Calc_X4



что-то не то...


в модели delays блоков не ставил, поставил distributed pipelining в on, input pipieline - 3, output pipeline - 1


--------------------
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- _Ivan_33   fixed-point, matlab, fpga - помогите разобраться   Aug 28 2014, 11:47
- - RHnd   Почему нельзя вычесть результат одной ветки из рез...   Aug 28 2014, 12:30
- - Fat Robot   В симулинке, когда у вас готова fxp-модель, то ее ...   Aug 28 2014, 13:40
|- - syoma   Цитата(Fat Robot @ Aug 28 2014, 15:40) В ...   Aug 28 2014, 15:20
|- - Fat Robot   Переход от FXP обратно к FLP нужен прежде всего дл...   Aug 28 2014, 16:01
- - _Ivan_33   RHnd, спасибо, что-то я завис. Можно еще тупо пост...   Aug 29 2014, 07:45
|- - Fat Robot   Речь шла про hdl-кодер, а не про симулинк в целом....   Aug 29 2014, 07:57
- - syoma   ЦитатаЕсли хочется инноваций, то можно и HDL Coder...   Aug 29 2014, 09:27
|- - Fat Robot   То что вы рассказываете, это прекрасно. Выводы для...   Aug 29 2014, 10:35
|- - syoma   Цитата(Fat Robot @ Aug 29 2014, 12:35) То...   Aug 29 2014, 11:15
|- - petrov   А откуда в силовой электронике такие полосы сигнал...   Aug 29 2014, 11:29
|- - Fat Robot   Т.е. я правильно понимаю, что включение в маршрут ...   Aug 29 2014, 12:36
|- - syoma   Цитата(Fat Robot @ Aug 29 2014, 14:36) Т....   Aug 29 2014, 14:43
|- - Fat Robot   Ясно. Если квалификация инженеров такая, как в это...   Aug 29 2014, 17:07
- - _Ivan_33   Я посмотрел вот это видео https://www.mathworks.co...   Sep 1 2014, 12:21
- - _Ivan_33   Я раньше игрался с кордиком в матлабе и увидел реа...   Sep 1 2014, 13:22
- - SemperAnte   Команда hdllib внутри Матлаба открывает библиотеку...   Sep 1 2014, 18:22
- - _Ivan_33   Все-таки остался висеть следующий вопрос: Вот я с...   Sep 2 2014, 13:37
- - SemperAnte   Блок Delay спокойно синтезируется и, в общем случа...   Sep 2 2014, 14:28
- - _Ivan_33   а вот еще вопрос - у меня получилось так, что длин...   Sep 4 2014, 08:12
- - SemperAnte   Просто динамический диапазон вашего числа меньше е...   Sep 4 2014, 08:28
- - _Ivan_33   спасибо!   Sep 4 2014, 08:35
- - _Ivan_33   Еще вопрос - что то не получается у меня сделать к...   Sep 5 2014, 07:28
- - SemperAnte   Вроде, все так и делается. Включается опция ...   Sep 5 2014, 08:17
|- - des00   Цитата(_Ivan_33 @ Sep 5 2014, 20:08) CODE...   Sep 8 2014, 03:29
- - _Ivan_33   Ну хотелось бы 1 регистр на входе, 1 после умножен...   Sep 8 2014, 06:36
|- - des00   Цитата(_Ivan_33 @ Sep 8 2014, 13:36) Ну х...   Sep 8 2014, 06:46
- - _Ivan_33   Увы, saturation стоит осознанно. То что синтезом б...   Sep 8 2014, 06:51
|- - des00   Цитата(_Ivan_33 @ Sep 8 2014, 13:51) Увы,...   Sep 8 2014, 07:14
- - _Ivan_33   Спасибо за разъяснения, des00, но моя совесть долж...   Sep 8 2014, 08:20
- - syoma   Saturation обещали пофиксить в следующем релизе, к...   Sep 16 2014, 14:19
- - x736C   syoma, тенденция как раз такая, что чем более отве...   Sep 19 2014, 07:23
- - Fat Robot   А можно ли прочитать где-нибудь про эту практику A...   Sep 19 2014, 08:26
- - x736C   Цитата(Fat Robot @ Sep 19 2014, 12:26) А ...   Sep 19 2014, 10:05


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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 03:29
Рейтинг@Mail.ru


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