zombi 0 24 июля, 2020 Опубликовано 24 июля, 2020 · Жалоба ? вот так описал. Гляньте пжл правильно ли? module decode (input [14:12] D,input [7:0] S, output reg [7:0] R); always @* R = &D ? S : {5'h0,D}; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RadiatoR 2 24 июля, 2020 Опубликовано 24 июля, 2020 · Жалоба Я новичек в фпга. Я бы сделал почти то же самое: module Decode (input wire [7 : 0] S, input wire [14 : 12] D, output wire [7 : 0] R); assign R = &D ? S : {5'b0, D}; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 24 июля, 2020 Опубликовано 24 июля, 2020 · Жалоба 1 hour ago, RadiatoR said: Я новичек в фпга. Аналогично. Ох уж и странный этот верилох, хош так пиши хош эдак! Просто прелесть! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 25 июля, 2020 Опубликовано 25 июля, 2020 · Жалоба А она в верилог не сохраняется? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 25 июля, 2020 Опубликовано 25 июля, 2020 · Жалоба Кто она, схема? Понятия не имею как это сделать. А в RTL вьювере можно посмотреть во что её компилятор превращает. По два AND и одному OR для каждого выходного бита. Писать такое на верилоге как-то не комильфо. Вот и поинтересовался у знатоков как лаконичнее записать. Кстати, в RTL код на верилоге выглядит по другому, а работает и то и то одинаково. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 60 25 июля, 2020 Опубликовано 25 июля, 2020 · Жалоба 2 minutes ago, zombi said: Кто она, схема? Понятия не имею как это сделать. Поищите, в Квартусе точно есть такая функция. Эту вашу схему надо сделать как блок и уже блок конвертируется в HDL. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 25 июля, 2020 Опубликовано 25 июля, 2020 · Жалоба Агааа... Сделать эту схему отдельным файлом .bdf и уже его конвертировать в верилог. Понял. Спасибо. Вот, конвертировал 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 4 27 июля, 2020 Опубликовано 27 июля, 2020 (изменено) · Жалоба 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; Если описывать каждый мультиплексор в отдельном модуле, так можно и запутаться - что же в конце концов делает всё устройство :) Изменено 27 июля, 2020 пользователем Yuri124 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sergey_Bekrenyov 0 27 июля, 2020 Опубликовано 27 июля, 2020 · Жалоба Можно еще короче. r = (& d [14:12]) ? s : 8'h07; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RadiatoR 2 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба А в чем смысл в данном случае указывать диапазон? r = (& d [14:12]) ? s : 8'h07; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sergey_Bekrenyov 0 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 1 hour ago, RadiatoR said: А в чем смысл в данном случае указывать диапазон? r = (& d [14:12]) ? s : 8'h07; Нету смысла. Так же как и в исходной схеме. Upd! r = (& d [14:12]) ? d[14:12] : s; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 9 hours ago, Sergey_Bekrenyov said: Можно еще короче. r = (& d [14:12]) ? s : 8'h7; Э нет. Так не пойдёт. Если не все разряды D в единице, то в младших разрядах R должно быть D, а не 7 ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 8 minutes ago, zombi said: А еще короче? Можно записать всё в один рядок. Тогда присутствующая нечитабельность взлетит на невероятные высоты! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба Поменял своё мнение, см выше Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RadiatoR 2 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 12 minutes ago, zombi said: Э нет. Так не пойдёт. Если не все разряды D в единице, то в младших разрядах R должно быть D, а не 7 ! В этом случае AND не сработает и на выходе будет S Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться