Главная страница Автономные управляющие системы 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]%
|
© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования. |