21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected] 1 6. Пример проектирования арифметического устройства Автоматизация проектирования компьютерных систем
21.02.2011д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ
e-mail: [email protected] 1
6. Пример проектирования арифметического устройства
Автоматизация проектирования компьютерных систем
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
2
Цель лекции и содержание
Цель ознакомление с проектами, которые вынесены на лабораторные занятия
План Беззнаковое умножение Знаковое умножение Быстрое знаковое умножение Беззнаковое деление Знаковое деление Реализация арифметических устройств, на
примере последовательного сумматора
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
3
Двоичное умножение
• Двоичное умножение требует только операций сложения и сдвига. В качестве примера выполняется умножение двоичных чисел: 1310x1110.
1101 (13) 1011 (11) 1101 1101 100111 0000 100111 110110001111 (143)
МножимоеМножитель
Частичныепроизведения }
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
4
Схема устройства двоичного умножения
8 7 6 5 4 3 2 1 0CONTROL
LoadShAd
Clk
Done
St
Произведение
Множимое
МножительCm 4-битный
сумматор
M
ACC
Суммирование каждого частичного произведения выполняется сразу после его формирования, таким образом, в один момент времени складывается не более двух двоичных чисел.
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
5
Выполнение умножения
000001011 M(11)1101 (13)011011011001101101 M 1101100111101010011110 M
001001111 M 1101100011111010001111 (143)
первоначальное содержание регистра произведения(сложение с множимым, так как М=1)после сложенияпосле сдвига(сложение с множимым, так как М=1)после сложенияпосле сдвига(пропуск операции сложения, так как М=0)после сдвига(сложение с множимым, так как М=1)после сложенияпосле сдвига(окончательный результат)
Линия, разделяющая произведение и множимое
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
6
Граф управляющего автомата устройства умножения
S00
S4Ad
S2Ad
S3Sh
S9Sh
S10Done
S5Sh
S8Ad
S7Sh
S6Ad
St'
St
M
MM
MM' M'
M'M'
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
7
Управляющий блок со счетчиком
Схемасложение-сдвиг
Счетчик
Схема управления умножениемSt
M
DoneLoadAdSh
K
S00
S2Ad
S3Sh
S5Done
St' St
M K'M'M'
M
K'
S4Sh
K
KM'
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
8
Умножение знаковых двоичных чисел (1)
0.1012 = 5/810 1.0112 = -5/810
Множимое Множит ель+ +- ++ -- -
0.1 1 1 (+7/8) Множимое x 0.1 0 1 (+5/8) Множитель(0. 0 0)0 1 1 1 (+7/64) (0.)0 1 1 1 (+7/16) 0. 1 0 0 0 1 1 (+35/64)
Примечание:правильное представлениедробных частичных произведений требуетрасширения знакового бита за двоичнойточкой,как это показано в скобках. (Такое
расширение не является обязательным для аппаратуры)
1.1 0 1 (-3/8) x 0.1 0 1 (+5/8)(1. 1 1)1 1 0 1 (-3/64) (1.)1 1 0 1 (-3/16) 1. 1 1 0 0 0 1 (-15/64)
Примечание:расширение знакового битаобеспечивает правильное представление отрицательного произведения
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
9
Умножение знаковых двоичных чисел (2)
0.1 0 1 (+5/8) x 1.1 0 1 (-3/8)(0. 0 0)0 1 0 1 (+5/64) (0.)0 1 0 1 (+5/16) 0. 0 1 1 0 0 1 1. 0 1 1 (-5/8) Примечание: выполняется сложение 1. 1 1 0 0 0 1 (-15/64) с дополнительным кодом множимого
1.1 0 1 (-3/8) x 1.1 0 1 (-3/8)(1. 1 1)1 1 0 1 (-3/64) (1.)1 1 0 1 (-3/16) 1. 1 1 0 0 0 1 0. 0 1 1 (+3/8) Примечание: выполняется сложение 0. 0 0 1 0 0 1 (+9/64) с дополнительным кодом множимого
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
10
Схема устройства умножения в дополнительном коде
8 7 6 5 4 3 2 1 0
CONTROL
LoadShAd
Clk
Done
St
Произведение
Множимое
МножительCm Cm
Cm
5-битный полныйсумматор
Формировательобратного кода
M
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
11
Граф состояний для умножения в дополнительном коде
S00
S4Ad
S2Ad
S3Sh
S90
S10Done
S5Sh
S8CmAd
S7Sh
S6Ad
St'
St
M
MM
MM'
M'
M'M'
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
12
Структурная схема быстрого устройства умножения
CONTROL
LoadShAdSh
Done
St
Произведение
Множимое
CmCm
Cm Формировательобратного кода
M
B
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
13
Граф состояний управляющего автомата для быстрого устройства умножения
S00
S10Done
St'
St
MM'
M'
M'
M'
S2Sh
S9Sh
S4Sh
S6Sh
M'
M'
M
M
MM
MM'M
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
14
Деление двоичных чисел
1010 частноеделитель 1101 10000111 делимое 1101 0111(135 13 = 10 0000 остаток 5) 1111 1101 0101 0000 0101 остаток
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
15
Устройство двоичного деления
X8 X7 X6 X5 X4 X3 X2 X1 X0
0 Y3 Y2 Y1 Y0
Регистр частного
Устройство вычитанияи сравнения
Control
Clock
St(Старт-сигнал)
ShLd
C
Su
Sh
V(переполнение)
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
16
Условие переполненияX8X7X6X5X4 Y3Y2Y1Y0 – левые пять битов регистра делимого больше или равны делителю, частное будет больше 15 и возникнет переполнение. Обратите внимание: если X8X7X6X5X4 Y3Y2Y1Y0 , частное будет
16160000
0123
345678
0123
45678
0123
012345678
YYYY
XXXXXXYYYYXXXXX
YYYYXXXXXXXXX
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
17
Граф состояний для управляющей схемы устройства деления
S0Stop
S3Su
S5Su
S8Su
S100
St' StS2ShC'
S4Sh
S6Sh
S7Sh
S9Su
C/VC
C
C'
C'
C'
CC'
C
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
18
Структурная схема устройства деления знаковых чисел
ДелимоеAcc (Остаток) Q (Частное)
1616
16
16
16
1616
(Шина данных)
Делитель
Cm2
Cm2
Ena
C Sh Ldl
LduCm1
St
V
LdsSLdd
Co1Ldd
K
DBus
Знак
Управл.схема
Cout Cin
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
19
Описание сигналов схемы устройства деления знаковых чисел
Ldu – загрузка с шины старшей половины делимого; Ldl – загрузка с шины младшей половины делимого; Lds – загрузка знака делимого в знаковый триггер; S – знак делимого; Cm1 – дополнение регистра делимого (дополнительный код); Ldd – загрузка с шины делимого; Su – подключение выхода сумматора к шине (Ena) и загрузка верхней
половины делимого из шины; Cm2 – разрешение преобразования в обратный код (Cm2 подключен к
знаковому биту делимого таким образом, что положительное число преобразуется в дополнительный код, а отрицательное – нет);
Sh – сдвиг регистра делимого влево на 1 разряд и увеличение счетчика на 1;
C – выход переноса сумматора (если С=1, делитель можно вычесть из верхней части делимого);
St – старт; V – переполнение; Qneg – частное будет отрицательным (Qneg = 1, когда знаки делимого и
делителя различны).
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
20
Граф управляющей схемы для деления знаковых чисел
S0Rdy
S5Sh
St' St
S3Ldd
S8Su
S10V
S2Ldl
S7Sh
S9Co1
S4Co1Ldd
S6Sh
C
SS'
C
C'K'C'
KC'C
K'
C'Qneg'C'Qneg
KQneg
KQneg'
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
21
Проектирование арифметического устройства на примере
последовательного сумматора
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
22
Структурно-функциональная схема последовательного сумматора
Управл.схема
N(Старт-сигнал)
Clock
Аккумулятор
Регистр слагаемого
Последовательныйсумматор
Sh
Load
Sh
Clock
FullAdder
Q RQ'
DCK
xi
yi
ci+1ci
x3
y3
x2
y2
x1
y1
x0
y0
sumiSIShLoad
SIShLoad
N
NS5Sh
S2Sh
S4Sh
S1Load
S3Sh
N'
N'S00
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
23
Функционирование последовательного сумматора
X Y ci sumi ci+1
t0 0101 0111 0 0 1t1 0010 1011 1 0 1t2 0001 1101 1 1 1t3 1000 1110 1 1 0t4 1100 0111 0 (1) (0)
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
24
Проектирование управляющего автомата
N
NS5Sh
S2Sh
S4Sh
S1Load
S3Sh
N'
N'S00 N=0 N=1 Sh Load
S0 S0 S1 0 0S1 S2 S2 0 1S2 S3 S3 1 0S3 S4 S4 1 0S4 S5 S5 1 0S5 S0 S1 1 0
Следующее состояние Значение выходаТекущеесостояние
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
25
Verilog-модель управляющего автомата.1
module FSM (input Clk, Reset, N,output Sh, Load);
/* Определение меток состояний*/parameter S0=3'b000;parameter S1=3'b001;parameter S2=3'b010;parameter S3=3'b011; parameter S4=3'b100;parameter S5=3'b101;
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
26
Verilog-модель управляющего автомата.2
reg [2:0] state, next_state;
/* Регистр состояний автомата*/ always @(posedge Clk, posedge Reset)
if (Reset) state <= S0;
elsestate <= next_state;
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
27
Verilog-модель управляющего автомата.3
/* Функция переходов*/always @(*)
case (state)S0 : if (N) next_state <= S1;
else next_state <= S0;S1 : next_state <= S2;S2 : next_state <= S3;S3 : next_state <= S4; S4 : next_state <= S5; S5 : if (N) next_state <= S1;
else next_state <= S0;default: next_state <= S0;
endcase
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
28
Verilog-модель управляющего автомата 4
// Функции выходовassign Sh = (state==S2) ||(state==S3)||
(state==S4) || (state==S5) ? 1'b1 : 1'b0;assign Load = (state==S1) ? 1'b1 : 1'b0;
endmodule
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
29
Кодирование состояний автомата при синтезе схемы
work.FSM(verilog)-state_h.state[5:0]original code -> new code
000 -> 000001001 -> 000010010 -> 000100011 -> 001000100 -> 010000101 -> 100000
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
30
Verilog-модель регистра
module register(input Clk, Load, Sh, SI, input [3:0] D;output reg [3:0] Q);
always @(negedge Clk)if (Sh)
Q <= {SI, Q[3:1]};else if (Load)
Q<=D;endmodule
4
LoadSI
ShClk
DReg
Q4
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
31
Verilog-модель последовательного сумматора.1
module seq_adder (input N, clk, reset,input [3:0] X, Y,output [4:0] result);
wire Sh, Load, sum, Cout; wire [3:0] Xin, Yin; reg Cin;
// Подключение компонентов: автомат и два регистраFSM U1 (.Clk(clk), .Reset(reset), .N(N), .Sh(Sh),
.Load(Load));register Reg_X (.Clk(clk), .Load(Load), .Sh(Sh),
.SI(sum), .D(X), .Q(Xin));register Reg_Y (.Clk(clk), .Load(Load), .Sh(Sh),
.SI(Yin[0]), .D(Y), .Q(Yin));
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
32
Verilog-модель последовательного сумматора.2
// Двоичный сумматорassign sum = Xin[0]^Yin[0]^Cin; assign Cout = (Xin[0]&Yin[0])|(Xin[0]&Cin)|(Yin[0]&Cin);
//Триггер always @(negedge clk or posedge Load)
if (Load) Cin <=1'b0;else if (Sh) Cin<=Cout;
assign result={Cin,Xin};endmodule
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
33
TestBench для последовательного сумматора 1
module seq_adder_tb;// Декларации внутренних сигналов
reg N, clk, reset; reg [3:0]X, Y;wire [4:0] result;reg [3:0] X_test [5:0], Y_test [5:0]; parameter period = 'd 20; wire ERROR;
// Описание тестируемого модуляseq_adder UUT (.N(N), .clk(clk), .reset(reset),
.X(X), .Y(Y), .result(result));
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
34
TestBench для последовательного сумматора 2
initial beginX_test [0] = 4'b0000; X_test [1] = 4'b0001;X_test [2] = 4'b1000; X_test [3] = 4'b1111;X_test [4] = 4'b1010; X_test [5] = 4'b0101; Y_test [0] = 4'b0000; Y_test [1] = 4'b0001;Y_test [2] = 4'b1000; Y_test [3] = 4'b1111;Y_test [4] = 4'b1010; Y_test [5] = 4'b0101;
end
initial begin // генератор синхросигнала clk=1'b0; reset=1'b1;#5 reset<=1'b0;forever #(period/2) clk=~clk;
end
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
35
TestBench для последовательного сумматора 3integer i, j; reg [3:0]A,B; reg [4:0] SUM, Sum_etalon;
alwaysfor (i=0; i<=5; i=i+1) begin
X = X_test[i];for (j=0; j<=5; j=j+1) begin
N = 1'b1; Y = Y_test[j];N = repeat (2) @(negedge clk) 1'b0;//чтение результатов операции#(5*period) A=X; B=Y; SUM=result; Sum_etalon={1'b0,X} + Y;
endend
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
36
TestBench для последовательного сумматора 4
assign ERROR = (SUM!=Sum_etalon)? 1'b1: 1'b0;initial $monitor ($realtime,
"ps %h %h %h %h %h %h ",N,clk,reset,X,Y,result);
endmodule
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
37
Макрофайл для тестирования
comp -include $DSN\src\register.vcomp -include $DSN\src\fsm.vcomp -include $DSN\src\seq_adder.vcomp -include "$DSN\src\TestBench\seq_adder_TB.v"
asim seq_adder_tb
close –listclose –wavewave N clk reset X Y SUMwave UUT/U1/sh UUT/U1/load UUT/U1/statelist -dec A B SUM Sum_etalon ERRORrun 5000 ns
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
38
Результаты тестирования последовательного сумматора
TIME A B SUM Sum_etalon ERROR 0.000 ? ? ? ? 0
140.000 ns 0 0 0 0 0280.000 ns 0 1 1 1 0420.000 ns 0 8 8 8 0560.000 ns 0 15 15 15 0700.000 ns 0 10 10 10 0840.000 ns 0 5 5 5 0980.000 ns 1 0 1 1 01.120 us 1 1 2 2 01.260 us 1 8 9 9 01.400 us 1 15 16 16 01.540 us 1 10 11 11 01.680 us 1 5 6 6 01.820 us 8 0 8 8 01.960 us 8 1 9 9 02.100 us 8 8 16 16 02.240 us 8 15 23 23 02.380 us 8 10 18 18 02.520 us 8 5 13 13 02.660 us 15 0 15 15 0
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
39
Имплементация. Размер проекта
Размер проекта 270 эквивалентных вентилей. Использует 15 триггеров и 15 блоков LUT.Logic Utilization:Number of Slice Flip Flops: 15 out of 1,536 1%Number of 4 input LUTs: 14 out of 1,536 1%
Total equivalent gate count for design: 204
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
40
ИмплементацияОценка временных параметров.1
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
41
ИмплементацияОценка временных параметров. 2
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
42
ИмплементацияОценка временных параметров. 3
N
result[0]
10,3 ns
1,6 ns
clk
0,6 ns
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
43
Командный файл для моделирования после имплементации comp -include "$DSN\src\seq_adder_timesim.vhd"
comp -include"$DSN\src\TestBench\seq_adder_TB.v"
asim seq_adder_tb -sdftyp/UUT=$DSN\SRC\seq_adder_timesim.sdf
close -listwavewave -noreg N clk reset X Y SUMwave UUT/U1/sh UUT/U1/load UUT/U1/state
list -collapse -dec A B Sum Sum_etalon ERRORrun 5000 ns
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
44
Приложение – Макро-язык. AsimКоманда asim - Инициализирует моделирование.
asim [ -help ] [ -file <filename> ] [ -i <iteration_limit> ]<configuration> | <entity> [ <architecture> ]
Аргументы:-help – вывод короткого описания синтаксиса команды;-file <filename> – описывает необязательный командный файл,
содержащий аргументы для команды asim. Эти аргументы можно использовать вместо того, чтобы непосредственно вводить их в команде;
-i <iteration_limit> – устанавливает максимальное число дельта-итераций, которые могут быть выполнены в одно и то же время моделирования. Это позволяет избежать бесконечных циклов;
<configuration> – задает имя конфигурации верхнего уровня для моделирования;
<entity> – имя интерфейса верхнего уровня для моделирования;<architecture> – имя архитектуры для моделирования. Если имя не
указано, будет использована последняя откомпилированная архитектура для данного интерфейса. Этот аргумент может использоваться только с интерфейсом.
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
45
Команда list Открывает окно List и/или добавляет сигналы к существующему окну.list [ -collapse ] [ -<radix> ][ -width <n> <item_name> ... ]
Аргументы:-collapse – переключатель между промежуточными и результирующими значениями, которые выводятся на экран. Результирующим считается значение последнего цикла моделирования в описанном времени моделирования.
-<radix> – задает систему счисления для сигналов, описанных в команде. Доступные опции: binary (abbr. bin) – двоичная; octal (abbr. oct) – восьмеричная; decimal (abbr. dec) –десятичная; hex – шестнадцатеричная;
-width <n> – параметр “n” задает ширину колонки; < item_name>– имя сигнала для размещения в окне List.
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
46
Команда wave
Команда добавляет указанные сигналы в окно Wave. wave [-<radix>] [ -<format> ] [ -height <pixels> ]
[ -color <red_value, green_value, blue_value> ] [ <item_name> ] ... ] ...
Аргументы:-<format> – необязательный параметр, задающий один из следующих
типов: literal (abbr. li) – символьный; logic (abbr. lo) – логический; Символьная waveform представляет собой прямоугольники, в которые вписаны значения. Логические сигналы могут быть либо 1, 0, X или Z.
-height <pixels> – высота waveform в пикселах;-color <red_value, green_value, blue_value> – цвет waveform,
описываемый тремя параметрами с диапазоном значений 0-255, соответствующими красной, зеленой и синей составляющей цвета (RGB-модель цвета);
<item_name> – имя сигнала.
21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: [email protected]
47
Команда run Выполняет моделирование. Синтаксис: run [ <time_step> | @<time> | -all | -next ] Аргументы: <time_step> – промежуток времени для моделирования; @<time> – абсолютное время, до которого будет
осуществляться моделирование; -all – выполняются все возможные шаги моделирования, пока не
будет обработано последнее событие из очередей драйверов; -next – выполнение до следующей записи в очередь драйвера.