Jump to content

    
Sign in to follow this  
zombi

Как эту схему на verilog описать?

Recommended Posts

Кто она, схема? Понятия не имею как это сделать.

А в RTL вьювере можно посмотреть во что её компилятор превращает.

По два AND и одному OR для каждого выходного бита.

Писать такое на верилоге как-то не комильфо.

Вот и поинтересовался у знатоков как лаконичнее записать.

Кстати, в RTL код на верилоге выглядит по другому, а работает и то и то одинаково.

Share this post


Link to post
Share on other sites
2 minutes ago, zombi said:

Кто она, схема? Понятия не имею как это сделать.

Поищите, в Квартусе точно есть такая функция.

Эту вашу схему надо сделать как блок и уже блок конвертируется в HDL.

Share this post


Link to post
Share on other sites

Агааа...

Сделать эту схему отдельным файлом .bdf и уже его конвертировать в верилог.

Понял. Спасибо.

 

Вот, конвертировал :biggrin:

 

module Block1(
    D,
    S,
    R
);


input wire    [14:12] D;
input wire    [7:0] S;
output wire    [7:0] R;

wire    0;
wire    SYNTHESIZED_WIRE_0;

wire    [7:0] GDFX_TEMP_SIGNAL_0;


assign    GDFX_TEMP_SIGNAL_0 = {0,0,0,0,0,D[14:12]};

assign    SYNTHESIZED_WIRE_0 = D[14] & D[13] & D[12];


lpm_mux0    b2v_inst1(
    .sel(SYNTHESIZED_WIRE_0),
    .data0x(GDFX_TEMP_SIGNAL_0),
    .data1x(S),
    .result(R));


endmodule
 

:wacko:

Share this post


Link to post
Share on other sites
On 7/24/2020 at 9:50 PM, zombi said:

always @* R = &D ? S : {5'h0,D};

Без always, простым ? описывается мультиплексор:

r = (& d [14:12]) ? s : {5'b0, d[14:12]};

где 

wire [7:0] s, r; // или reg [7:0] s;

 

Если описывать каждый мультиплексор в отдельном модуле, так можно и запутаться - что же в конце концов делает всё устройство :)

Edited by Yuri124

Share this post


Link to post
Share on other sites
1 hour ago, RadiatoR said:

А в чем смысл в данном случае указывать диапазон?

r = (& d [14:12]) ? s : 8'h07;

 

Нету смысла. Так же как и в исходной схеме. 

Upd!

 

r = (& d [14:12]) ? d[14:12]  : s;

Share this post


Link to post
Share on other sites
9 hours ago, Sergey_Bekrenyov said:

Можно еще короче. 

r = (& d [14:12]) ? s : 8'h7;

Э нет. Так не пойдёт. Если не все разряды D в единице, то в младших разрядах R должно быть D, а не 7 !

Share this post


Link to post
Share on other sites
8 minutes ago, zombi said:

А еще короче?

Можно записать всё в один рядок. Тогда присутствующая нечитабельность взлетит на невероятные высоты!

Share this post


Link to post
Share on other sites
12 minutes ago, zombi said:

Э нет. Так не пойдёт. Если не все разряды D в единице, то в младших разрядах R должно быть D, а не 7 !

В этом случае AND не сработает и на выходе будет S

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this