Jump to content

    
Sign in to follow this  
zombi

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

Recommended Posts

5 minutes ago, RadiatoR said:

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

А зачем мне на выходе S если AND не сработал?

Если AND не сработал на выходе должно быть {5'b00000,D}

А если сработал должно быть S.

Share this post


Link to post
Share on other sites
21 minutes ago, Nick_K said:

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

module decode(input [14:12]D,input [7:0]S,output reg [7:0]R);assign R=&D?S:{5'h0,D};

Нормально всё читается. :biggrin:

Share this post


Link to post
Share on other sites
22 hours ago, Yuri124 said:

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

где 

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

Поскольку выход коммутатора - это wire. то нужно добавить assign;

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

6 minutes ago, zombi said:

output reg [7:0]R);R=&D?S:{5'h0,D};

не уверен, что так пойдет. Провода определяются как reg для always блоков.

И еще - почему используете &d, ведь коммутатором управляют только 3 разряда d?

Edited by Yuri124

Share this post


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

Нормально всё читается.

На таком проекте моржет и да (и всё равно мне рагульно). А вот когда будет набор файлов под 1-2МБ, тогда я посмотрю как это прочитать)

Share this post


Link to post
Share on other sites

А у меня еще вопросик назрел, как у начинающего верилого мучителя.

При таких записях  5'b0   32'b0 14'h0 точно все биты будут нулями?

 

 

12 minutes ago, Yuri124 said:

И еще - почему используете &d, ведь коммутатором управляют только 3 разряда d?

Да у D много разрядов, но на вход модуля поступает только 3 шт.

 

module decode(input [2:0]D,input [7:0]S,output reg[7:0]R);assign R=&D?S:{5'h0,D};

Share this post


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

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

Согласен, на нотацию портов не смотрел. Привык, что нулевой порт сверху. 

Share this post


Link to post
Share on other sites
On 7/25/2020 at 1:28 AM, zombi said:

Ох уж и странный этот верилох, хош так пиши хош эдак!

На верилоге можно описывать не только структуру (т.е. набор элементарных кирпичиков и связи между ними) устройства или его части, но и его поведение (или комбинировать это по необходимости и удобству).

Что будет дальше происходить с сигналом r[7:0]? Допустим - он будет потом записываться в регистр при наличии разрешающего сигнала, а при необходимости - в этот регистр записывается некая начальная комбинация xxxxxxxx.

Тогда можно просто описать поведение этого регистра, не вдаваясь в подробности - каким образом до него дойдут нужные сигналы. Необходимый для этого функционал компилятор добавит сам.

Например:

wire enable, preset, data_select;

assign data_select = & d[14:12]; //дали понятное имя сигналу управления, ну и чтобы по несколько раз не писать одно и то же

reg [7:0] r_registered;

 

always @(posedge clk)

if (preset == 1) r_registered <= 8'bxxxxxxxx;

else

   begin     // "скобки" begin/end просто чтобы выделить тело основной функции работы устройства

      if (enable == 1)

         if (data_select == 1)  r_registered <= s;

         else  r_registered <= {5'b0, data_select};

     else ;  // не обязательно

   end

 

Всё - не нужно описывать явно коммутатор и его подключение, упрощаются дебри описания устройства, более понятен принцип его работы.

Коммутатор явно не указан, но подразумевается в третьем if/else - компилятор его добавит сам.

Edited by Yuri124

Share this post


Link to post
Share on other sites
5 минут назад, zombi сказал:

Ну прям Pascal. Постоянно забываю ; ставить в конце строк ... 

Так ведь и в VHDL надо точки с запятой ставить. :umnik2:

Share this post


Link to post
Share on other sites

Я только пару дней как начал verilog изучать.

Но удобство и лаконичность оного успел оценить!

Никакими HDLями до этого не пользовался.

Всё квадратиками и треугольничками на блок-схеме малевал.

Ибо всё это плис-проектирование и вообще схемотехника далекооо не главное,

я бы сказал : не более 5% важности от общей задачи.

 

Share this post


Link to post
Share on other sites

Нарушение принципов KISS. Прти рефакторинге почти 90% предложенного кода я бы отправил в помойку и переписал более понятным стилем. Ещё и комментариями снабдил код.. Описывать надо не экономя пару строк кода, а чтобы было максимально понятно и просто. Ну ежели это разовая поделка - то можно писать как угодно....

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