2016-04-06 4 views
-1
  1. В чем разница между использованием ~ тильды и ! восклицательным знаком для неинвертирования или инвертирования сигнала.В Verilog, в чем разница между ~ и?

    always @(posedge clock) 
    begin 
        z=(!x&!y&Q1); 
        Q1=(~x&~y|z); 
    end 
    
  2. Какая разница он будет делать, если не блокирует = был снят и заменен, как в коде ниже.

    always @(posedge clock) 
    begin 
        z<=(!x&!y&Q1); 
        Q1<=(~x&~y|z); 
    end 
    

ответ

2
  • ! логично
  • ~ является побитовое

Другими словами:

  • !a означает "a не 0"
  • ~a означает «инвертировать биты a»

Для вас вторым вопроса:

Первого фрагмент коды является неправильной. Вы не можете использовать неблокирующие назначения для последовательной логики. Если вам нужна комбинаторная логика:

always @(x, y, Q1, z) # or always @(*) 
begin 
    z=(!x&!y&Q1); // here, you have to use blocking assignment as it is combo logic 
    Q1=(~x&~y|z); 
end 
+0

Просто чтобы прояснить и лучше понять, почему чувствительный список содержит все переменные потому, что задания на LHS (например, г, Q1) должны управляться входами на RHS, которые являются x, y, Q1, z. Если чувствительный список был составлен только из часов, то единственный раз, когда изменения z, Q1 будут меняться, происходит при положительном фронте часов и не из-за изменения входа. – newb7777

+0

@ newb7777: Вы не должны пытаться понять, что с предложениями, например * «Значение X изменится, когда ...» *. Вы должны попытаться иметь в виду «физическое» представление ворот, которые будут созданы. Список чувствительности - это то, что вашему компилятору и симулятору необходимо правильно эмулировать поведение создаваемых вами ворот. Я не читал его, но это могло бы помочь: https://www.edgefx.in/digital-logic-circuits/. – Plouff

+0

@ newb7777: Другими словами, комбинаторная логика и последовательная логика имеют совершенно другое поведение. Понимание этих различий является обязательным требованием для проектирования аппаратного обеспечения с использованием языков HDL. – Plouff