Звоните! 
 (926)274-88-54 
 Бесплатная доставка. 
 Бесплатная сборка. 
Ассортимент тканей

График работы:
Ежедневно. С 8-00 до 20-00.
Почта: soft_hous@mail.ru
Читальный зал -->  Программные средства foundation 

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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 [ 195 ] 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359

оставлено таким же, как и в табл. 6.17. В архитектуре объявлены два компонента: rolrie и fixup, для которых используются наши предыдущие определения объектов. Обращение к этим компонентам происходит в части программы, содержащей исполняемые операторы. Там же имеется несколько операторов присваивания, которые вырабатывают необходимые управляющие сигналы (то есть реализуют дополнительную логику , указанную на рис. 6.14).

Табл. 6.22. Структурная VHDL-архитектура устройства быстрого сдвига с 6-ю режимами работы

architecture barrel16 struc of barrelie is

component rolrl6 port (

DIK: in STD L0GIC VECTQR(15 downto 0); - Data inputs

S: in raSIGSEDO downto 0); - Shift a.-Bount, 0-15

DIR: in STD.LOGIC; - Shift direction, 0=>L, 1=>R

DOUT: out STD.LOGIC.VECTORClS dosnto 0) - Data bus output ); end component;

component fixup port (

DIN: in STD.LOGIC.VECTOR(IS downto 0); - Data inputs s; in USSIGKED(3 downto 0); - Shift aaount, 0-15

FE.N: in STD.LOGIC; - Fixup enable

FDAT: in STD.LOGIC; Fixup data

DOUT: out STD.LOGIC.VECTORClS downto 0) - Data bus output ); end component;

signal DIR.RIGHT, FIX.RIGHT, FIX RIGHT.DAT, FIX.LEFT, FIX.LEFT.DAT: STD.LOGIC; signal ROUT, FOUT, RFIXIN, RFIXOOT; STD.LOGIC.VECTORClS downto 0);

begin

DIR.RIGHT <= 1 when С = Rrotate or С = Rlogical or С Rarith else 0; .IX.LEfT <= when DIR.EIGHT=0 and (C = Llogical or С = Larith) else 0; FIX.RIGHT <= 1 when DIR..RIGHT= 1 and <C = Rlogical or С = Rarith) else 0; FIX.LEFT.DAT <= DIK(O) when С = Larith else 0; FIX.EIGHT.DAT <- DIKCiS) when C = Rarith else 0; У1; rolrie port шар (DIM, S, DIR.RIGHT, ROUT); U2: fixup port map (ROLIT, S, FIX.LEFT, FIX.LEFT.DAT, FOUT); U3: for i in 0 to IS generate RFIXISCi) <= FDUT(15-i); end generate; U4: fixup port map CRFIXIK, S, FIX.RIGHT, FIX.RIGHT.DAT, RFTXOUT); U5: for i in 0 to 15 generate DOLT(i) <= RFIXOLT(lS-i) ; end generate; end barrelle.struc;

Например, первый оператор присваивания устанавливает единичное значение сигнала DIR right, когда значением с задается один из сдвигов вправо. При логических и арифметических сдвигах влево и вправо вырабатываются сигналы разрешения для схем коррекции fix left и fix right. Значениям корректирующих битов присвоены имена fix left dat и fix right dat.

Хотя все операторы в этой архитектуре выполняются одновременно, для удобства чтения они перечислены в табл. 6.22 в порядке фактического потока данных. Сначала вызвается компонент rolrl б для выполнения основного циклического сдвига влево или вправо. Результат этого сдвига подается на вход первого компонента fixup (U2) для осуществления коррекции битов при логическом и арифметическом сдвигах влево. Затем следует оператор generate (U3), который изме-



СТИЛЬ УПРЯТЫВАНИЯ ИНФОРМАЦИИ

Зная, как кодрфуется управляющий сигнал С, вы, возможно, захотите написать первый оператор присваивания в табл. 6.22 в виде DIR RIGHT<=C (0), что гарантировало бы более эффективную реализащпо схемы, которая вырабатывает этот управляющий сигнал: схема состояла бы всего лишь из одного соединения! Но при этом нарушился бы профаммистский стиль упрятывания ин-формащш, и это могло бы привести к появлению конструктивных недостатков.

Мы в явном виде записали коды сдвигов в объявлении объекта ЬаггеИб посредством определения констант Архитектуре не нужно знать детали кодирования. Предположим, однако, что в нашей архитектуре произведена все же предложенная выше замена. Если бы кто-то другой (или мы сами!) захотел позднее изменить определения constant в объявлении объекта ЬаггеИб, задавая коды сдвигов иначе, то при новом способе кодирования уже нельзя бьшо бы воспользоваться данной архитектурой! В задаче 6.13 требуется так изменить определения, чтобы объявление объекта позволяло уменьшить стоимость проекта, осуществив предложенную нами замену.

няет порядок следования битов данных для следующего обращения к компоненту f ixup (U4), производящему коррекцию при логическом и арифметическом сдвигах вправо. Наконец, другой оператор generate (U5) возвращает прежний порядок следования битов, измененный оператором U3. Заметьте, что исполнение из и U5 заключается в простом изменении порядка соединений.

Для исходного объекта barrel 16 можно написать много других архитектур. В задаче 6.14 мы предлагаем архитектуру, которая позволяет выполнять циклический сдвиг с помощью объекта roll б, использующего только 2-вхо-довые мультиплексоры, а не с помощью более дорогого объекта го1г1б.

6.3.2. Простой шифратор для получения чисел с плавающей точкой

В разделе 6.1.2 мы определили простой формат числа с плавающей точкой и изложили задачу проектирования преобразователя числа с фиксированной точкой в число с плавающей точкой. Задача нахождения показателя экспоненты числа с плавающей точкой легко решается с помощью приоритетного шифратора, выполненного в виде ИС средней степени интефации. При профаммировании на любом из языков описания схем решение той же самой задачи отображается в виде вложенных операторов if . В табл. 6.23 приведена поведенческая VHDL-npo-фамма шифратора для получения чисел с плавающей точкой. В пределах архитектуры fpenc arch с помощью вложенного оператора if проверяется величина входной переменной В и устанавливаются соответствующие значения М и Е. Обратите внимание, что в программе используется пакет IEEE std logic arith; это сделано для того, чтобы у нас были тип UNSIGNED и операции сравнения, которые сопровождают его, как было объяснено в разделе 5.9.6. Ради представления профаммы в компактном виде введена переменная BU, выражающая значение переменной в в формате типа UNSIGNED; в принципе, в каждом вложенном операторе 1 f вместо BU можно написать UNSIGNED (В).



Табл. 6.23. Поведенческая VHDL-программа для преобразования чисел фиксированной точкой в числа с плавающей точкой

library IEEE;

use IEEE.std.logic li64.all; use IEEE.std logic arith.all;

entity fpenc is port (

B: in STD L0GIC VECT0R(10 downto 0); - fixed-point number

M: out STD L0GIC VECrr0R(3 downto 0); - floating-point mantissa

E: out STD L0GIC VECT0R(2 downto 0) - floating-point exponent

end fpenc;

architecture fpenc arch of fpenc is begin

process(B)

variable BU: UNSIGNED(10 downto 0); begin

BU := OTJSIGSED(B);

if BU < 16 then M <= B( 3 downto 0); E <= ООО ; elsif BU < 32 then M <= B( 4 dovnto 1); E <= 001 ; elsif BU < 64 then M <= B( 5 downto 2); E 010 ; elsif BU < 128 then M <= B( 6 downto 3); E <== Oil ; elsif BU < 256 then M <= B( 7 downto 4); E <= 100 ; elsif BU < 512 then M <= B( 8 downto 5); E <= 101 ; elsif B*U < 1024 then M <=в( 9 downto 6); E <- 110 ; else M <= B(10 downto 7); E <= 111 ;

end if; end process; end fpenc arch;

переменная в he моего типа

В табл. 6.23 мы использовали выражение UNSIGNED (В) для преобразования переменной В; массив типа STD LOGIC VECTOR преобразуется в массив типа UNSIGNED. Эта операция называется явным преобразованием типов. Язык VHDL позволяет преобразовывать тесно связанные между собой типы, записывая желаемый тип, за которым в круглых скобках следует преобразуемая величина. Два типа массивов считаются тесно связанными , если у них один и тот же тип элементов, одна и та же размерность и одинаковые типы индексов (обычно INTEGER), а также те массивы, тип которых можно преобразовать. Элементы старого массива размещаются в новом массиве на соответствующих позициях в том же порядке слева направо.



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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 [ 195 ] 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359



ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку.



Звоните! Ежедневно!
 (926)274-88-54 
Продажа и изготовление мебели.


Копирование контента сайта запрещено.
Авторские права защищаются адвокатской коллегией г. Москвы
.