des00 25 10 июня, 2010 Опубликовано 10 июня, 2010 · Жалоба Потребовалось мне тут сделать перестраиваемый интерполирующий фильтр, но не модный CIC/RAM_CIC а колхозный FIR со всеми единичными коэффициентам (причины выбора FIR к теме не относится). Ну значит набросал код звена для сыклона 3 module acc #( parameter int pDAT_W = 16 ) ( iclk , ireset , isclr , imode , ival , idat , oval , odat ); //------------------------------------------------------------------------------------------------------ // //------------------------------------------------------------------------------------------------------ input logic iclk ; input logic ireset ; input logic isclr ; input logic [2 : 0] imode ; // used upsample :: 0/1/2/3/4 == 1/2/4/8/16 input logic ival ; input logic signed [pDAT_W-1 : 0] idat ; output logic oval ; output logic signed [pDAT_W-1 : 0] odat ; //------------------------------------------------------------------------------------------------------ // //------------------------------------------------------------------------------------------------------ logic signed [pDAT_W - 1 + 4 : 0] acc [0 : 15]; logic signed [pDAT_W - 1 : 0] mux; //------------------------------------------------------------------------------------------------------ // //------------------------------------------------------------------------------------------------------ always_comb begin case (imode[1:0]) 2'd0 : mux = acc[0][pDAT_W - 1 + 0 : 0]; 2'd1 : mux = acc[1][pDAT_W - 1 + 1 : 1]; 2'd2 : mux = acc[3][pDAT_W - 1 + 2 : 2]; 2'd3 : mux = acc[7][pDAT_W - 1 + 3 : 3]; default : mux = acc[0][pDAT_W - 1 + 0 : 0]; endcase end always_ff @(posedge iclk) begin int i; // oval <= ival; if (ival) begin for (i = 0; i < 16; i++) begin acc[i] <= (i == 0) ? idat : (acc[i-1] + idat); end end end `ifndef __USE_ALTERA_MACRO__ always_ff @(posedge iclk) begin if (ival) begin odat <= imode[2] ? acc[15][pDAT_W - 1 + 4 : 4] : mux; end end `else generate genvar i; for (i = 0; i < pDAT_W; i++) begin : gen dffeas dffeas ( .clk ( iclk ) , .d ( mux [i] ) , .ena ( ival ) , .asdata ( acc[15][4 + i] ) , .sclr ( 1'b0 ) , .sload ( imode[2] ) , .q ( odat[i] ) ); end endgenerate `endif endmodule Посмотрите как он собирает выходной регистр odat в случаях pDAT_W < 16 и в случае pDAT_W >= 16. Теперь проверьте сколько весит подмодуль acc, для 8ми битных данных в случаях pD = 2 и pD = 1. module acc_var_order #( parameter int pDAT_W = 8 ) ( iclk , ireset , isclr , imode , ival , idat , oval , odat ); //------------------------------------------------------------------------------------------------------ // //------------------------------------------------------------------------------------------------------ input logic iclk ; input logic ireset ; input logic isclr ; input logic [2 : 0] imode ; input logic ival ; input logic [pDAT_W-1 : 0] idat ; output logic oval ; output logic [pDAT_W-1 : 0] odat ; //------------------------------------------------------------------------------------------------------ // //------------------------------------------------------------------------------------------------------ localparam int pD = 2; logic acc__ival [0 : pD-1]; logic [pDAT_W-1 : 0] acc__idat [0 : pD-1]; logic acc__oval [0 : pD-1]; logic [pDAT_W-1 : 0] acc__odat [0 : pD-1]; //------------------------------------------------------------------------------------------------------ // //------------------------------------------------------------------------------------------------------ generate genvar i; for (i = 0; i < pD; i++) begin : gen_acc_stage // assign acc__ival[i] = ival; assign acc__idat[i] = (i == 0) ? idat : acc__odat[i-1]; // acc #( .pDAT_W ( pDAT_W ) ) acc ( .iclk ( iclk ) , .ireset ( ireset ) , .isclr ( isclr ) , .imode ( imode ) , .ival ( acc__ival[i] ) , .idat ( acc__idat[i] ) , .oval ( acc__oval[i] ) , .odat ( acc__odat[i] ) ); // end endgenerate assign oval = acc__oval[pD-1]; assign odat = acc__odat[pD-1]; endmodule Вот еще один маленький ответ, на что ориентируется квартус когда оценивает необходимость использования sload %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 11 июня, 2010 Опубликовано 11 июня, 2010 · Жалоба Хоть намекните, какие выводы сделали. Я попробовал код, скомпилировал, посмотрел, но ничего не понял :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 7 11 июня, 2010 Опубликовано 11 июня, 2010 · Жалоба Хоть намекните, какие выводы сделали. Я попробовал код, скомпилировал, посмотрел, но ничего не понял :) предполагаю, что это касается каких-то общих ресурсов LAB-а а интересно у симплифая лучше получится или нет? btw: я после альтеры вернулся к ксайлинсу :) то есть не эксперт и вообще не понравилось :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 11 июня, 2010 Опубликовано 11 июня, 2010 · Жалоба предполагаю, что это касается каких-то общих ресурсов LAB-а По намекам des00 получается, что когда шина меньше 16 битов, то sload не используются. Скорее, касается цепей, подходящих к LAB-ам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 11 июня, 2010 Опубликовано 11 июня, 2010 · Жалоба По намекам des00 получается, что когда шина меньше 16 битов, то sload не используются. Скорее, касается цепей, подходящих к LAB-ам. Да именно так, ква до последнего бережет этот ресурс(общий для 16 LC = LB для третьего сыклона), только когда размер регистра больше либо равен размеру LAB он задействует LC. Во втором случае, когда у нас 2 регистра по 8мь, он пакует их в один LB и делает sload. Похоже где то внутри у квартуса жесткое решение вида if (reg_length < 16) bla bla bla. Сюда просится более мягкий подход. Но что есть, то есть %) btw: я после альтеры вернулся к ксайлинсу :) то есть не эксперт и вообще не понравилось :) назад к кривому ISE из-за чуть более хороших чипов ? Или не вынесла душа поэта %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 11 июня, 2010 Опубликовано 11 июня, 2010 · Жалоба ... назад к кривому ISE из-за чуть более хороших чипов ?... В моём случае Synplify спас отца русской демократии от психотравмы :laughing: а камушки у них действительно хорошие :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 11 июня, 2010 Опубликовано 11 июня, 2010 · Жалоба В моём случае Synplify спас отца русской демократии от психотравмы :laughing: а камушки у них действительно хорошие :) угу, еще бы чипскпоп заменить, SDC поддержку ввести, и глюкавый маппер с разводчиком подрихтовать %) Нет уж умерла, так умерла. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 11 июня, 2010 Опубликовано 11 июня, 2010 · Жалоба 2 des00 ну я ж не говорю, что сексуальные отношения с асей от подключения Synplify сошли на нет :laughing: их просто стало меньше и нагрузка на мой молодой детский мозг уменьшилась :rolleyes: до приемлемой Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Des333 0 11 июня, 2010 Опубликовано 11 июня, 2010 · Жалоба угу, еще бы чипскпоп заменить, SDC поддержку ввести, и глюкавый маппер с разводчиком подрихтовать %) Нет уж умерла, так умерла. Вчера на семинаре обещали к 2012 добавить поддержку SDC и SV Я раньше ISE не пользовался ни разу, но от коллег слышал о "дружелюбности" их интерфейса. Коллегам верю, но после вчерашних красочных рассказов немецких инженеров - решил таки скачать последнюю версию и проверить, насколько на данный момент Xilinx'овый софт конкурентен Альтеровскому. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 11 июня, 2010 Опубликовано 11 июня, 2010 · Жалоба Вчера на семинаре обещали к 2012 добавить поддержку SDC и SV в таком случае, зная традиции хилых, к 2014 ому после 8го сервис пака можно будет брать. Интересно разворачиваться он на сколько гиг будет %) а там глядишь альтера нормальный сыклон 5 и макс 3 сделает..... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prototype 2 14 июня, 2010 Опубликовано 14 июня, 2010 · Жалоба Вчера на семинаре обещали к 2012 добавить поддержку SDC и SV Я раньше ISE не пользовался ни разу, но от коллег слышал о "дружелюбности" их интерфейса. Коллегам верю, но после вчерашних красочных рассказов немецких инженеров - решил таки скачать последнюю версию и проверить, насколько на данный момент Xilinx'овый софт конкурентен Альтеровскому. :) Пришлось немного попользоваться ISE - сплошные рвотные позывы. Списываю все это на свою зашоренность и привычку к Альтере. des00 назад к кривому ISE из-за чуть более хороших чипов ? Или не вынесла душа поэта %) Ну не знаю, один и тот же проект кушал ресурсов примерно одинаково (и скорости прогнозировали оба софта примерно равные) для циклона 3 и для спартана 6. Что собственно вы считаете преимуществом? А фиттер - да, песня просто. Когда посмотрел как он по чипу рассиропил проект - аж дурно стало. Я конечно подозреваю, что если его весь констрейнами огородить, то наверно можно получить человеческую упаковку. Но почему же все так плохо с дефолтовыми настройками... :crying: Заказчику был нужен именно Xilinx только потому, что им нужны были бумаги по надежности от фирмы. Альтера на такое давно забила, имхо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prototype 2 14 июня, 2010 Опубликовано 14 июня, 2010 · Жалоба Вчера на семинаре обещали к 2012 добавить поддержку SDC и SV Я раньше ISE не пользовался ни разу, но от коллег слышал о "дружелюбности" их интерфейса. Коллегам верю, но после вчерашних красочных рассказов немецких инженеров - решил таки скачать последнюю версию и проверить, насколько на данный момент Xilinx'овый софт конкурентен Альтеровскому. :) Пришлось немного попользоваться ISE - сплошные рвотные позывы. Списываю все это на свою зашоренность и привычку к Альтере. des00 назад к кривому ISE из-за чуть более хороших чипов ? Или не вынесла душа поэта %) Ну не знаю, один и тот же проект кушал ресурсов примерно одинаково (и скорости прогнозировали оба софта примерно равные) для циклона 3 и для спартана 6. Что собственно вы считаете преимуществом? А фиттер - да, песня просто. Когда посмотрел как он по чипу рассиропил проект - аж дурно стало. Я конечно подозреваю, что если его весь констрейнами огородить, то наверно можно получить человеческую упаковку. Но почему же все так плохо с дефолтовыми настройками... :crying: Заказчику был нужен именно Xilinx только потому, что им нужны были бумаги по надежности от фирмы. Альтера на такое давно забила, имхо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Des333 0 14 июня, 2010 Опубликовано 14 июня, 2010 · Жалоба Пришлось немного попользоваться ISE - сплошные рвотные позывы. Списываю все это на свою зашоренность и привычку к Альтере. Какая версия? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 15 июня, 2010 Опубликовано 15 июня, 2010 · Жалоба Что собственно вы считаете преимуществом? достаточно посмотреть на структуру слайса спартанов и LE сыклонов что бы увидеть разницу. Вот когда в сыклонах появится ALM от старших стратиксов, тогда архитектурно они сравняются. Да и ДСП спаратна 6 и сыклона 3 несравнимы. А на логике общего вида, как вы правильно заметили, чипы приблизительно равные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 15 июня, 2010 Опубликовано 15 июня, 2010 · Жалоба ... как он по чипу рассиропил проект ... Насколько я понимаю, "размазывание" проекта по ПЛИС делается специально, чтобы избежать температурных градиентов, иначе какая-то область перегревалась бы, расширялась и "ломала" кристалл. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться