Upload
irina-hahanova
View
495
Download
2
Embed Size (px)
Citation preview
2/9/2011д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ
e-mail: [email protected] 1
3. Dataflow уровень описания моделей
Автоматизация проектирования компьютерных систем
VERILOG
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
2
Цель лекции и содержание
Цель – изучить принципы построения моделей вентильного и dataflowуровней
План1. Стандартные логические элементы2. Определенные пользователем примитивы3. Задержки
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
3
Dataflow-модели
a
b
cout
e#5
#4
out=ab+c
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
4
Оператор непрерывного назначения.1
Синтаксис:assign [drive_strength] [delay] net_value = expression {,net_value = expression};
Примеры:assign out=i1&i2; assign addr[15:0]=addr1[15:0]^addr2[15:0];assign {c_out, sum[3:0]}=a[3:0]+b[3:0]+c_in;
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
5
Оператор непрерывного назначения.2
//Обычная формаwire out;assign out = i1 & i2;//Упрощенная формойwire out = i1 & i2;
Задержки в операторе назначенияwire out;assign #10 out = i1 & i2; //Обычная форма
wire #10 out = i1 & i2; //Упрощенная форма
Задержку линии можно также указать в момент ее декларации:.wire #10 out; //Описание задержки линииassign out = i1 & i2; // значение линии out будет
// присвоено через 10 единиц времени
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
6
Приоритеты операторовОператор Описание
+ - ! ~ Унарные* / % Арифметические+ - (binary) Бинарные<< >> <<< >>> Сдвига< <= > = > Отношения== != === !== Равенства& ~& and nand^ ~^ ^~ xor xnor| ~| or nor&& Логическое and|| Логическое or? : Условный оператор
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
7
Операторы Verilog
Оператор Описание Оператор Описаниеa + b a плюс b ~ b not a - b a минус b a & b and a * b a умножить на b a | b or a / b a разделить на b a ^ b xor
a % b a по модулю b a ** b Степень a ^~ b, a ~^ b xnor
Оператор Описание Оператор Описаниеa < b меньше a == b равноa > b больше a != b не равноa <= b меньше или равно a ===b равноa => b больше или равно a !== b не равно
Оператор Описаниеa && b a and b
a || b a or b!a not a
Операторы Verilog
Логические
Арифметические Побитовые
Отношения Равенства
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
8
Арифметические операторы
Если хотя бы один бит операнда равен x, то результат равен x
in1 = 4'b110x;in2 = 4'b1010;sum = in1 + in2; // результат операции сложения – 4'bx
Результат операции по модулю представляет собой остаток от деления двух чисел. Знак результата совпадает со знаком первого операнда.
10 % 3 // результат 1, остаток от деления 10 на 3 равен 117 % 3 // результат 2, остаток от деления 17 на 3 равен 212 % 3 // результат 0, нет остатка от деления-7 % 3 // результат -1, знак первого операнда11 % -3 // результат 2 -4’d12 % 3 // результат 1, т.к. -4’d12 = 4'b0100%3 = 1
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
9
Операторы логические, отношения и равенства
Логические операторыA=3; B=0;A&&B=0 A||B=1 !A=0 !B=1 A = 2'b0x; B = 2'b10; // Операнд с элементом xA && B = x // эквивалентно (x && 1)
Операторы отношенияreg [3:0] a, b; a = 4’b1100; b = 4’b0110;a < b // равняется логическому 0 a > 8 // равняется логической 1a <= b // равняется логическому 0 a >= 10 // равняется логической 1a < 4’b1zzz // результат равен x a < 4’b1x01 // результат равен x
Операторы равенстваreg [3:0] a, b; a = 4’b1100; b = 4’b101x;
a == 4’b1100 // истина – логическая 1 a != 4’b1100 // ложь – логический 0b == 4’b101x // результат равен x b != 4’b101x // результат равен xb === 4’b101x // истина – логическая 1 b !== 4’b101x // ложь – логический 0
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
10
Побитовые операторы
& 0 1 x z ^ 0 1 x z | 0 1 x z ~^^~ 0 1 x z ~ 0 1 x z
0 0 0 0 0 0 0 1 x x 0 0 1 x x 0 1 0 x x 1 0 X X1 0 1 x x 1 1 0 x x 1 1 1 1 1 1 0 1 x xx 0 x x x x x x x x x x 1 x x x x x x xz 0 x x x z x x x x z x 1 x x z x x x x
reg [7:0] a, b; a = 8’b1010xzxz; b = 8’b10010011;a & b // поразрядное И, результат 8’b100000xx;a | b // поразрядное ИЛИ, результат 8’b1011xx11;a ^ b // поразрядное по модулю 2, результат 8’b0011xxxx;a ~^ b // поразрядное по модулю 2 с инверсией выхода,
// результат 8’b1100xxxx;~ a // поразрядная инверсия, результат 8’b0101xxxx;
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
11
Операторы редукции
Операторы редукции или свертки & (and), ~& (nand), | (or), ~| (nor), ^ (xor), ^~ или
~^ (xnor)
Пример• &x // 1&0&1&0=1'b0• |x // 1|0|1|0=1'b1• ^x // 1^0^1^0=1'b0.
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
12
Операторы сдвигаОператоры сдвига //x=4'b1100 y=x>>1 //y=4'b0110 y=x<<1 // y=4'b1000 y=x<<2 //y=4'b0000
reg [3:0] a; a = 4’b1111; a << 3 = 4’b1000 a >> 3 = 4’b0001 a << 1’bz = 4’bxxxx a >> 1’bx = 4’bxxxx
reg [7:0] r8; r8 = a >>> b; // Сдвиг a вправо на b разрядов, // старшие биты заполняются значением a[7]
Оператор Описаниеa << b Сдвиг влевоa >> b Сдвиг вправо
a <<< b Знаковый сдвиг влевоa >>> b Знаковый сдвиг вправо
Операторы сдвига
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
13
Оператор конкатенации
Синтаксис:{expression | multiplier{expression},
expression | multiplier{expression}, . . .} Примеры.
//A=1'b1, B=2'b00, C=2'b10, D3'b110Y={B, C} //Y=4'b0010Y={A, B, C, D, 3'b001} //Y=11'b10010110001Y={2{B}, C} //Y=6'b000010Y={3{A}, 2{B}, C} //Y=9'b111000010
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
14
Оператор условного назначение
Синтаксис:condition_expr ? true_expr: false_expr;
mux_2to_1
In1
In0
Sel
Out module mux_2to_1 (out, In0, In1, Sel);output Out;input In0, In1, Sel;
assign out = Sel ? In1 : In0;endmodule
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
15
Две модели мультиплексора 4 в 1
// Модель 1module mux4_to_1 (out, i0, i1, i2, i3, s1, s0);
output out;input i0, i1, i2, i3;input s1, s0;
//Вложенный условный оператор assign out = s1 ? (s0 ? i3 : i2) : (s0 ? i1 : i0);
endmodule
// Модель 2module mux4_to_1 (out, i0, i1, i2, i3, s1, s0);
output out;input i0, i1, i2, i3; // входы данныхinput s1, s0; // управляющие входы
assign out = (~s1 & ~s0 & i0) | (~s1 & s0 & i1) | (s1 & ~s0 & i2) | (s1 & s0 & i3);
endmodule
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
16
Системные задачи и функции.1
Системная задача $display служит для вывода информации на экран. $display | $displayb | $displayh | $displayo (p1, p2, p3, ...) ;
Символ Описание формата%d or %D Десятичный формат%b or %B Двоичный формат%h or %H Шестнадцатиричный формат%o or %O Восьмеричный формат%c or %C Символы в формате ASCII%v or %V Интенсивности сигнала класса net%m or %M Иерархическое имя%s or %S В виде строки%t or %T Текущий формат времени
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
17
Системные задачи и функции.2
Задача $monitor предлагает механизм для наблюдения за изменениями сигнала.$monitor | $monitorb | $monitorh | $monitoro (p1, p2, p3, ...) ;$monitoron; // влючить мониторинг$monitoroff; // выключить мониторинг .
Примерinitial // блок инициализацииbegin
$monitor($time, "clock = %b, reset = %b", clock, reset);end
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
18
Системные задачи и функции.3
$stop [(n)];$finish [(n)];
n Сообщение0 Отсутствует1 Время моделирования
2 Время моделированияи и работы CPU,размер используемой памяти
Режимы диагностических сообщений задач $stop и $finish
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
19
Системные задачи и функции.4
$printtimescale [ ( hierarchical_name ) ] ;// функции
integer $timeinteger $stimereal $realtime
Задача $printtimescale – выводит единицы измерения и точность вычисления времени для указанного модуля hierarchical_name. Системные функции $time и $stimeвозвращают текущее время моделирования в виде 64- и 32-битового целого числа, а функция $realtime – в вещественном формате.
Пример:`timescale 1 ms / 1 usmodule a_dat;initial
$printtimescale;endmodule
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
20
Работа с файлами $fopen и $fclose integer multi_channel_descriptor = $fopen ( " file_name " );
| integer fd = $fopen ( " file_name ", type ); $fclose ( multi_channel_descriptor );
| $fclose (fd); Пример
integer file1, file2;initial begin
file1 = $fopen("file1");file2 = $fopen("file2");$display("The number used for file 1 is %0d", file1);. . .$fclose(file1);$fclose(file2);
end
Screen+Log File Otput$display $fdisplay$write $fwrite$strobe $fstrobe$monitor $fmonitor
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
21
Функции работы с файлами
Чтение символов (байта)c = $fgetc ( fd );code = $ungetc ( c, fd );
Чтение строки str из файла fd integer code = $fgets ( str, fd );
Чтение форматируемых данных integer code = $fscanf ( fd, format, args );
• // чтение из файла, заданного fd
integer code = $sscanf ( str, format, args );
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
22
Чтение двоичных данных из файла
integer code = $fread( myreg, fd); integer code = $fread( mem, fd); integer code = $fread( mem, fd, start); integer code = $fread( mem, fd, start, count); integer code = $fread( mem, fd, , count);
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
23
Загрузка памяти из файла
$readmemb ( " file_name " , memory_name [ , start_addr [ , finish_addr ] ] ) ;
| $readmemh ( " file_name " , memory_name [ , start_addr [ , finish_addr ] ] ) ;
Примеры reg [7:0] mem[1:256];
initial $readmemh("mem.data", mem); initial $readmemh("mem.data", mem, 16); initial $readmemh("mem.data", mem, 128, 1);
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
24
$random()
Размер возвращаемых значенй соответствует типу integer.
Пример использования функции $random.parameter SEED = 33;reg [31:0] vector;
always @(posedge clock)vector = $random (SEED);
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
25
Контрольные вопросы и задания.11. Что означает оператор a === b в Verilog? 2. Что означает оператор a !== b в Verilog? 3. Чему будет равен результат операции Y = {3{A}}, где A = 2’b1?4. Чему равен результат операции X|Y для переменных X =
5’b10101, Y = 5’b00111?5. Чему равен результат операции X&Y для переменных X =
5’b10101, Y = 5’b00111?6. Чему равен результат операции X^Y для переменных X =
5’b10101, Y = 5’b00111?7. Чему равен результат операции &X для X = 5’b10101?8. Чему равен результат операции |X для X = 5’b10101?9. Чему равен результат операции Y={A, B, C, D, 3’B101} для
A=1’b1, B=1’b0, C=2’b11, D=2’b00?10. Чему равен результат операции e = {2{1'b1,a,1'b0}} для
a=4'b0110?
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
26
Контрольные вопросы и задания.2 Синхронный счетчик может быть построен с использованием двухступенчатого
JK-триггера. Ниже представлена вентильная схема JK-триггера. Если clear = 0, то триггер устанавливается в нулевое состояние. Первая ступень триггера сохраняет значения по положительному фронту сигнала clock, вторая – по отрицательному. Разработать ее Verilog-модели вентильного и dataflow-уровня.
J
K
clear
clock
a
b
y
ybar
cbar
c
d
q
qbar
J K qn+1
0 0 qn
0 1 01 0 11 1 q'n
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭe-mail: [email protected]
27
#1
#1
reset
set
q
qbarset reset qn+1
0 0 qn
0 1 01 0 11 1 ?