dvladim 0 October 4, 2011 Posted October 4, 2011 · Report post Подскажите, пожалуйста, как реализовать в Verilog'95 нижеприведенную схему? Да вот прям через assign. Верхний кусок: assign q = ShR0 & ShR1 & ShR2 & Shr3; ну и т.д. Quote Share this post Link to post Share on other sites More sharing options...
AlexBT_ 0 October 4, 2011 Posted October 4, 2011 · Report post Да вот прям через assign. Верхний кусок: assign q = ShR0 & ShR1 & ShR2 & Shr3; ну и т.д. Выписывать в несколько цепочек по пару сотен имен в каждую? Никакой цикл или хитрую операцию применить нельзя? Quote Share this post Link to post Share on other sites More sharing options...
bogaev_roman 0 October 5, 2011 Posted October 5, 2011 · Report post Выписывать в несколько цепочек по пару сотен имен в каждую? Никакой цикл или хитрую операцию применить нельзя? Вы хотя бы стандарт посмотрели? Или хотите чтоб за Вас все сделали? Я б через for сделал как-то так: always @(*) for(i=0;i<32;i=i+1) q [i]= ShR[4*i] & ShR[4*i+1] & ShR[4*i+2] & Shr[4*i+3]; Quote Share this post Link to post Share on other sites More sharing options...
AlexBT_ 0 October 5, 2011 Posted October 5, 2011 · Report post for(i=0;i<32;i=i+1) q = ShR[4*i] & ShR[4*i+1] & ShR[4*i+2] & Shr[4*i+3] - компилятор на это выражение выдает ошибку: выражение в скобках [] должно быть константой Quote Share this post Link to post Share on other sites More sharing options...
bogaev_roman 0 October 6, 2011 Posted October 6, 2011 · Report post for(i=0;i<32;i=i+1) q = ShR[4*i] & ShR[4*i+1] & ShR[4*i+2] & Shr[4*i+3] - компилятор на это выражение выдает ошибку: выражение в скобках [] должно быть константой А ведь знаете что, я ведь не поленился проверить и загнал в квартус на verilog'95 module test_pin_project ( input [127:0] ShR, output reg [31:0] q ); integer i; always @(*) for(i=0;i<32;i=i+1) q [i]= ShR[4*i] & ShR[4*i+1] & ShR[4*i+2] & ShR[4*i+3]; endmodule Получил на rtl wiever то, что и хотел увидеть... Quote Share this post Link to post Share on other sites More sharing options...
sazh 9 October 6, 2011 Posted October 6, 2011 · Report post always @(*) Там по умолчанию 2001 Подскажите, пожалуйста, как реализовать в Verilog'95 нижеприведенную схему? Выделить сущность в виде функции и размножить. А чтоб на 95 - садисты там у Вас module fun_shr ////2001 ( input [127:0] shr, output [15:0] bit_out, output en_out ); reg [15:0] f; reg [15:0] en; function [1:0] y (input [7:0] x); begin y[0] = ( (&x[3:0]) && (!(|x[7:4])) ) || ( (&x[7:4]) && (!(|x[3:0])) ); y[1] = ( (&x[3:0]) && (!(|x[7:4])) ) && ( !( (&x[7:4]) && (!(|x[3:0])) ) ); end endfunction always @(*) begin: block integer i; for (i=0; i<=15; i=i+1) {f[i], en[i]} = y(shr[8*i +:8]); end assign bit_out = f, en_out = &en; endmodule Quote Share this post Link to post Share on other sites More sharing options...
stu 0 October 6, 2011 Posted October 6, 2011 · Report post как на верилоге описать регистр, который на AHDL выглядит как Registr[2..0][7..0] : dffe; ??????????? Quote Share this post Link to post Share on other sites More sharing options...
bogaev_roman 0 October 6, 2011 Posted October 6, 2011 · Report post Там по умолчанию 2001 Так я по умолчанию в verilog version на verilog-1995 поменял в analysis & synthesis settings. Стандарта именно на 95 под рукой нет, но сомневаюсь, чтобы квартус проигнорировал настройки. to stu Может быть: reg [2:0] Registr[0:7]; 8 регистров разрядности 3. Ну и описать его правильно в блоке always при работе, чтоб реализован был именно на требуемых триггерах. PS/ Я в AHDL не силен, но логика вроде просматривается. Quote Share this post Link to post Share on other sites More sharing options...
stu 0 October 6, 2011 Posted October 6, 2011 (edited) · Report post под регистором имел ввиду D-триггер. : dffe; можно конечно 3 семирязрядных триггера описать, но надо как Registr[2..0][7..0] : dffe; Edited October 6, 2011 by stu Quote Share this post Link to post Share on other sites More sharing options...
ViKo 1 October 6, 2011 Posted October 6, 2011 · Report post как на верилоге описать регистр, который на AHDL выглядит как Registr[2..0][7..0] : dffe; logic [7:0] Register [2:0] 3 регистра разрядности 8. Не так? Quote Share this post Link to post Share on other sites More sharing options...
sazh 9 October 6, 2011 Posted October 6, 2011 · Report post Так я по умолчанию в verilog version на verilog-1995 поменял в analysis & synthesis settings. Получается - игнорирует. Ибо это тоже 2001 module test_pin_project ( input [127:0] ShR, output reg [31:0] q ); Quote Share this post Link to post Share on other sites More sharing options...
bogaev_roman 0 October 6, 2011 Posted October 6, 2011 · Report post Получается - игнорирует. Верю на слово, перед AlexBT_ извиняюсь за неверную наводку... to stu Что Вы имеете ввиду под можно конечно 3 семирязрядных триггера описать, но надо как Registr[2..0][7..0] : dffe; Триггер как-бы по определению выдает только один разряд. Я так понял Вам нужен массив элементов 3X8 или 8X3, реализованный на D триггерах? Если да, то варианты выше подходят. Quote Share this post Link to post Share on other sites More sharing options...
stu 0 October 6, 2011 Posted October 6, 2011 (edited) · Report post Триггер как-бы по определению выдает только один разряд. Я так понял Вам нужен массив элементов 3X8 или 8X3, реализованный на D триггерах? Если да, то варианты выше подходят. весело. особенно это Edited October 6, 2011 by stu Quote Share this post Link to post Share on other sites More sharing options...
bogaev_roman 0 October 6, 2011 Posted October 6, 2011 · Report post весело. особенно это А что Вас смущает, это просто RTL представление. Показан один 8 разрядный регистр на триггерах, Вы глубже копните, например в technology Map Viewer. Посмотрите сколько там триггеров. Quote Share this post Link to post Share on other sites More sharing options...
ViKo 1 October 6, 2011 Posted October 6, 2011 · Report post А что Вас смущает, это просто RTL представление. Показан один 8 разрядный регистр на триггерах, Да и эти можно разгруппировать, нажать правую кнопку мышки и выбрать в меню. Quote Share this post Link to post Share on other sites More sharing options...