Главная страница  Автономные управляющие системы 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [ 38 ] 39 40

d[4. .1] :с1ор ]сос1;%Пврвмвкш1в переведения слараемого а дополнительный код%

р[2..1]:рвгер; Перемеяная, переносящая переполнение разрядной сетки в покааатаяь%

sg: S igm; %ПарамвШ1ая

юиды%

приведены

иду

BEGIN

Яормаяиаация входов%

гх[1].а[16..1] х [16..1]; гх[2] .а[16. .1] хх[16. .1] ; гх[3].а[16..1]=ххх[16..1];

%Вормалиэация всоа%

rw[ll.a[16..1I-w[16..11;

rw[2] .а[16. .l]=ww[16. .1] ;

rw[3].а[16..l] www[16..1]; %--%

%Умноженив входов на авса% %Пр(мачакнв: числа были 12.11.10.9.8.7.6.5.4.3.2.1 %

% знак числааяачв-

ние числа показатель степени двойки - сдвиг% %Числа перемножаются, показатели складываются% 8.хх[7. .0]=гх[1] .8[12. .5] ; 8.уу[7..01-стС1].8[12..5]; 8.а[б..0] GND; 8.Ь[6..0]GND; 8.olk=olk; в[l].a[3..0] rxtl].8[4..1]; в[1].Ь[3..0] [1].8[4..1]; в[11.о1к=о1к; а[1].cin GND; Проводим нормалиаацив промежуточных рвзультатов% Г8[1].а[16]-8.р[14]; %3нак Г8[1] .а[15] (аГО; Г8[1].а[14..1]=8.р[13..0];

Добавление показатаяя после нормаяиза-

ции%

ее[1] .в[3. .0]- [1] .8um[3. .0]; ee[l].Ь[3..0]-rв[l].8[4..1]; eв[l] .о1к=о1к; вв[1].cin GND;

вв.хх[7..0]=rx[2J.e[12..5]; .уу[7..0]- [2].8[12..5]; 88.а[6..0] GND; 88.Ь[6..0] GND; 88.olk=olk; в[2].a[3..0] rx[2].8[4..1]; в[2].Ь[3..0]-ст[2].8[4..1]; е[2].с1к=с1к; е[2}.cin GND; Проводим нормализацию промежуточных результатов Г8[2] .а[16]=88.р[14] ; Знак

ЦИ>1

Г8[2].a[15] GND;

Г8[2].а[14..1]-88.р[13..0];

Добавление показателя посла нормалиаа-

ве[2} .а[3. .0]-а[2] .8um[3. .0] ; ee[2].b[3..0] r8[21.8[4..1]; ее[2].clk-clk; ее[2].cin GND;

888.хх[7..0]=гх[3].8[12..5]; 888.yy[7..0] rw[3].8[12..5]; 888.а[6..0] GND; 888.Ь[6..01-GND; 888.с1к=с1к;

в[31.а[3..0] гх[31.8[4..1];

e[3].b[3..0] rw[3].8[4..1];

в[3].о1к=о1к;

в[3].cin=GND; Проводим нормализацию промежуточных реаультатоа Г8[3}.а[16]-888.р[14]; Знах Г8[3].a[15] GND; Г8[3].а[14..11=888.р[13..0];

Добавление показатаяя после нормалиаации

вв[3] .а[3. .0]-в[3] .8шп[3. .0] ;

вв[3].Ь[3..0]=г8[3].8[4..1];

ее[3}.clkvclk;

ее[3}.cin GND;

ыполиания умножения

тест*

демонстрируют правильность входов яа веса м нормализации

o[12..5]=Г8[1].8[12..5]; о[4..1]- е[1].8шп[3..0];

оо[12. .5]=Г8[2] .8 [12. .5]; оо[4. .1]-вв[2] .8шп[3. .0] ;

ооо[12. .5]=Г8[3] .8[12. .5] , ооо[4. .1]-ав[3] .8шп[3. .0] ;

Общий суиматор

во всех 3 случаях 14 бит - а11аков11й Для корректного сложения необходимо равенство показательных частей. Приводим покавательшм

часть двух слагаемых к показательной части старшго из них.

Производим выравнивание по показательным частям

t[l] .а[12. .51=Г8[1] .8[12. .5], t[l] .а[4. .1]-вв[1] .8Ш0[3. .0] ;

t[l].b[12..5]-r8[2].8[12..5]; t[l] .Ь[4. .1] вв[2] .8ша[3. .0] ; t[l].о1к=о1к;



%твст%

%двмонстрируюФ правильность выполнения выравнивания значений перед сяожвнивм%

jae[12..11=t[ll.a8[12..11; jb8[12. .ll=t[ll .b8[12. .Ц; %--%

%Произведвм проверку знака (О соответствует (-)

и доп. коду) и запрос к дополнительноиу коду%

%Перввод необходим лишь при различных знаках%

If ((t[ll .a8[121==GND)t(t[ll.b [121==VCC))==VCC

then

d[ll.olk-clk;

d[ll.xx[7]=GND; d[ll.xx[6..0]=t[ll.a8[ll..5];

%твот%

ka[12..51=t[ll.a8[12..5]; kb[ll..51 d[ll.yy[6..0]; *--%

%Суммирувм% q[ll.olk-clk; qCl].cinsSND;

q[ll.a[7..0]=t[ll.ae[12..51;

q[ll.b[71 GND; q[ll.b[6..01=d[ll.yy[6..0];

%таст%

каЬ8[12..51=q[ll.8um[7..0]; %--%

%таст%

ka[12..51=t[l].be[12..51; kb[ll..51=d[l].yy[6..01; --%

%Суммирувм%

q[ll.clk=olk; q[1].cin-GND;

q[ll .aC7..01-t[l].b8[12..5];

qCU .bC7I eND; q[ll .b[6. .0]=d[l] .yy[6. .0] ;

%теот%

kab8[12..51=q[ll.8um[7..0]; %--%

%Проверка на получение отрицательного результата в доп. кодв%

%If (qdl .8um[71=GND) then -% %То перевод из доп. кода и постановка знака - (0)%

If (q[ll.8Um[71==VCC) then d[2].clk=clk;

d[21 .xx[71 GND; dC21 .xx[6 . 01=q[ll . 8uin[6. . 0] ;

m[121=GlJD; m[ll. . 51=d[21 .yy [6. . 0]; Elae

m[121=VCC;m[ll. . 51=q[ll . 8Um[6. . 0] ; End If;

Ri[4 . . l]=t[l] .38 [4 . .1] ;%Показательная часть при вычитании не изменяется. М.б. t[1].bs[4..1]%

%Проаерка на получение отрицательноро результата в доп. коде%

%If (q[l] .8um[7]= GND) then>?>% %То перевод из доп. кода и постановка знака - (0)%

If (q[ll .8Um[71=VCC) then d[2].clk=clk;

d[2] .xx[7]=GND; d[21 .xx[6. . 01=<j[ll .8Uin[6. . 01 ;

m[12]=GND; m[ll..5]=d[21.yy[6..0]; Elae

m[12]=VCC;m[ll..51 qClI.8um[6..0]; End If;

m[4..l]=t[ll.a8[4..1];%Показатвльная часть при вычитании не изменяется. М.б. t[1].Ьа[4..1]%

Else %В случав двух положительных или двух отрицательных слагаеиых%

%Суммируем% q[l].С1к=с1к; q[l].Cin-GND;

q[l].a[6 .0]=t[l] bs[ll .5];%Восьмой бит - зна-

ковый%

q[ll .b[6. .01=t[ll .asCll. .5] ;

%тест%

%демонстрируют правильность выполнения сложения (без переносов)%

f Cll..51=q[ll.aum[6..0]; *--%

%Перевод необходим лишь при различных знаках%

Elslf

((t[l] .a8[121=VCC)S(t[ll .b8C121==GND))==VCC then d[ll.clk=clk;

d[ll .xx[71 GND; d[l] .xx[6. . 01=t[ll .b8[H. .5];

%11роверка на переполнение разрядной сетхи уместна лишь при сложении чисел одного знака% If (q[ll .8um[71=VCC) then p[ll.clk=clk;

p[ll.xxa[ll..61=q[l].8um[6..1];



р[1].ххЬ[4..l] t[l].b8[4..1];%иожно и

t[l].a8[4..1]%

m[12]=t[l].Ь8[12];%иожно и t[l].a8[12] - их знак одинаков%

т[11..1]-р[1].уу[11 .1]; Elae

m[12]=t[l].b8[12];%иожно и t[l].a8[12] - их знак одинаков%

т[11. .5]=q[l] .8ШП[6. .0] ;

т[4..l]>t[l].Ь8[4..1],%можно и t[1].аа[4..1]%

End If; End If;

%ФвСФ%

%двионстрируют правильность аыполненрш сложвния%

f [12. .l]=in[12. .1] , %--%

%Произаодим ашравнивание по показательнш част1ш% t[2] .а[12. .5]=1П[12. .5] ; t[2] .а[4. .l]=in[4. .1] ;

t[2].b[12..5] Г8[3].8[12..5], t[2].b[4..1] вв[3].8ШП[3..0]; t[2].с1к с1к;

%ФвСФ%

%двионстрируют правильность выполнения выравнивания значений перед сложвниви% jja8[12..1]-t[2].a8[12..1]; 33b8[12..1]-t[2].b8[12..1]; %--%

%Произавдви проверку знака (О соответствует (-) и доп. коду) и запрос к дополнительному коду%

%Перевод необходим лишь при различных знахах%

If ((t[2] .a8[12]==GND)S(t[2] .b8[12]= VCC))=VCC

then

d[3] .cllc=cllc;

d[3].xx[7]=GND, d[3].xx[6..0]=t[2] a8[11..5];

%Суммируеи% q[2] .ollc=cllc; q[2] .cxn=Gin);

q[2].a[7..0]-t[2].b8[12..5];

q[2].b[7]=GND, q[2].b[6..0]=d[3].yy[6..0],

%Провврка на получение отрицательного результата а доп. кодв%

%If (q[2] .8Uin[7]=GND) then???% %То перевод из доп. кода и постановка знака - (0)% If (q[2] .8Uin[7]=VCC) then d[4] .cllc=cllc;

d[4] .xx[7]=GND; d[4] .xx[6. . 0]=q[2] . 8Uin[6. . 0];

mm[12]=GND; mm[ll..5]=d[4].yy[6..0]; Elae

mm[12]=VCC; mm[ll.. 5]=q[2] . 8Uin[6. . 0] ; End If;

min[4. .l]Bt[2] .38[4. . 1] ;%Показатвльная часть при вычитании не изменяется. М.б. t[2].Ьа[4..1]%

%Переаод необходим лишь при различных анаках%

Elalf

((t[2].a8[12]=VCC)S(t[2] b8[12]==GND))=VCC then d[3].clk-clk;

d[3].xx[7]=GND; d[3] xx[6..0] t[2].ba[11..5];

%Суммирувм% q[2].clk-clk; q[2].cin=GND;

q[2] a[7..0]-t[2].a8[12..5];

q[2].b[7]-GND; q[2].b[6..0]-d[3].yy[6..0];

%Провврха на получение отрицательного результата а доп. коде%

%If (q[2] .8Uin[7]ssGND) then>>?% %То перевод из доп. кода и постановка знака - (0)%

If (q[2] .8um[7]=VCC) then d[4].clk clk;

d[4] .xx[7]-GND; d[4] .xx[6. .0] q[2] .8Uin[6. .0] ;

mm[12] GND; mm(ll..5] d[4].yy[6..0]; Elae

mm[12]=VCC; mm[ll. . 5] q[2] . 8Uin[6. . 0] ; End If;

nm[4..l]Bt[2].38[4..1];%Показатвльная часть при вычитании не изменяется. М.б. t[2].Ьа[4..1]%

Elae %В случав двух положительных или двух отрицательных слагаемых% %Суммирувм% q[2].clk-clk; q[2].cin=GND;

q[2].a[6..0] t[2].b8[11..5],%BocbMOM бит - зна-

ковый%

q[2].b[6..0]=t[2].aatll..5];

%11роаерка на переполнение разрядной сетки уместна лишь при сложении чисел одного знака% If (q[2] .8Uin[7]=VCC) then p[2].olk=clk,

p[2] .xxa[ll. .6]=q[2] .8Uin[6. .1];

p[2].xxb[4..l]=t(2].bs[4..1];%можно и

t[l].a8[4..1]%



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [ 38 ] 39 40

© 2000 - 2021 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.