Мегаобучалка Главная | О нас | Обратная связь


Поразрядные Операторы (Bitwise Operators )



2015-11-10 764 Обсуждений (0)
Поразрядные Операторы (Bitwise Operators ) 0.00 из 5.00 0 оценок




Ключевые символы:~, &, |, ^, (~^, ^~).

 

К поразрядным операторам относятся поразрядное отрицание, поразрядные логические И, ИЛИ, исключающее или, исключающее ИЛИ-НЕ. Поразрядные операторы выполняются только над операндами, имеющими одинаковую разрядность. В том случае, если разрядность одного операнда меньше другого, недостающие разряды дополняются нулямиы . Ниже приведен пример использования поразрядных операторов.

 

module bitTest;

reg [3:0] a, b ,c;

 

initial begin

a = 4'b1100; b = 4'b0011; c = 4'b0101;

$displayb(~a); // bitwise negation, evaluates to 4'b0011

$displayb(a & c); // bitwise and, evaluates to 4'b0100

$displayb(a | b); // bitwise or, evaluates to 4'b1111

$displayb(b ^ c); // bitwise xor, evaluates to 4'b0110

$displayb(a ~^ c); // bitwise xnor, evaluates to 4'b0110

end

endmodule // bitTest

 

3.4.15.Операторы приведения (Reduction Operator )

Keysymbols: &, ~&, |, ~|, ^, ~^, ^~.

Операторы приведения – И, ИЛИ, И-НЕ, ИЛИ-НЕ, исключающее или, исключающее ИЛИ-НЕ (два варианта). Они выполняются над многоразрядным операндом пошагово, бит за битом, начиная с двух крайних левых разрядов, выдавая на выходе одноразрядный результат. Очевидно, что такой подход позволяет реализовать проверку на четность (нечетность). Ниже приведены примеры использования операторов приведения.

 

module reductTest;

reg [3:0] a, b ,c;

 

initial begin

a = 4'b1111;

b = 4'b0101;

c = 4'b0011;

 

$displayb(& a);//, (то же 1&1&1&1), равен 1 1

$displayb(| b); // (same as 0|1|0|1), evaluates to 1 $displayb(^ b); // искл.ИЛИ (same as 0^1^0^1), evaluates to 0

end

 

endmodule // reductTest

 

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

Операторы сдвига (Shift Operator).

Ключевые символы: >>, <<.

Операторы сдвига позволяют осуществить сдвиг операнда как вправо, так и влево. Пример их использования приведен ниже

 

module shiftTest;

reg [3:0] a;

 

initial begin

a = 4'b1010;

 

$displayb(a << 1); // shift left by 1, evaluates to 4'b0100

$displayb(a >> 2); // shift right by 2, evaluates to 4'b0010

end

 

endmodule // shiftTest

 

Этот оператор часто применяют для реализации регистров сдвига, длинных алгоритмов перемножения и т.п.

 

Конкатенация (объединение,Concatenation )

Ключевой символ: {, }

Объединение позволяет увеличить разрядность (size) цепей (nets), регистров (registers) и т.д.

 

module concatTest;

reg a;

reg [1:0] b;

reg [5:0] c;

 

initial begin

a = 1'b1;

b = 2'b00;

c = 6'b101001;

 

$displayb({a, b}); // produces a 3-bit number 3'b100

$displayb({c[5:3], a}); // produces 4-bit number 4'b1011

 

end

 

endmodule // concatTest

Повторение (Replication )

Повторение (Replication) может быть использовано для многократного повторения объединения (concatenation), как показано в нижеследующем примере.

 

module replicTest;

reg a;

reg [1:0] b;

reg [5:0] c;

 

initial begin

a = 1'b1;

b = 2'b00;

 

$displayb({4{a}}); // результат - 1111

c = {4{a}};

$displayb(c); // результат -001111

end

 

endmodule // replicTest

 

Системные директивы (System Tasks )

 

Наверное, этот раздел не будет интересен тем, кто пишет только синтезируемые описания на Verilog. Но поскольку язык является не только средством описания проекта, но и довольно мощным инструментом для поведенческого моделирования систем, то следует сказать несколько слов о встроенных директивах компилятора, позволяющих выполнить моделирование и произвести анализ его результатов.

 

Директивы вывода результатов моделирования (Writing to Standard Output)

Ключевые слова: $display, $displayb, $displayh, $displayo, $write, $writeb, $writeh, $writeo.

 

Наиболее часто применяется директива $display. Она может быть использована для вывода на экран строк, выражений или переменных. Ниже приведен пример использования директивы $display

 

$display("Hello Dr Blair");

--- output: Hello Dr Blair

 

$display($time) // current simulation time.

--- output: 460

 

counter = 4'b10;

$display(" The count is %b", counter);

--- output: The count is 0010

 

Синтакс определения формата вывода аналогичен синтаксису printf в языке программирования C. Ниже приведено его описание для директивы $display

 

Формат Описание
%d or %D %b or %B %h or %H %o or %O %m or %M %t or %T %e or %E %f or %F %g or %G Decimal Binary Hexadecimal Octal Hierarchical name Time format Real in scientific format Real in decimal formal Real in shorter of above two

Для специальных символов используются следующие эскейп-последовательности (escape sequence)

 

\n \t \\ \" %% Новая строка табуляция \ " %

 

Директива $write идентична директиве $display, за исключением того, что она не осуществляет автоматический переход на новую строку в конце вывода информации

Если спецификация вывода не определена, то по умолчанию исполшьзуются следующие форматы

 

Директива Формат по умолчанию
$display $displayb $displayh $displayo $write $writeb $writeh $writeo decimal binary hexadecimal octal decimal binary hexadecimal octal

 

Так, например, следующий фрагмент кода …

 

$write(5'b01101);

$writeb(" ", 5'b01101);

$writeh(" ", 5'b01101);

$writeo(" ", 5'b01101,"\n");

 

… И результат его работы

 

13 01101 0d 15



2015-11-10 764 Обсуждений (0)
Поразрядные Операторы (Bitwise Operators ) 0.00 из 5.00 0 оценок









Обсуждение в статье: Поразрядные Операторы (Bitwise Operators )

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...



©2015-2020 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (764)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)