Звоните! 
 (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

constant Lrotate; constant Brotate: constant Llogical: constant .logical: constant Larith: constant Karith: end barrelie;

STE LDGIC ¥EGTOP. STD.LOGIC.VECTOR STD..LQCIC VECTOR STD.LOGIC. VECTOR STD.LOGIC.VECTOR STD.LOGIC.VECTOR

OOQ 001 010 Oil 100 101

- Data liiput.4

- Shift amount, 0-1,5 Mode control

- Data bus output

- Define the coding of

- the different shift modes

architecture barrolie.behavioral of barrelie is subtype DATAWQRD is STD L0G1C VECT0R(15 downto 0);

function Vrol (D: DATAWCRD; S; UNSIGNFD) retxim DATAWORD is variable K: ISTEGEE; variable TMPD; DATAWDRD; begin

N := GONV IJiTEGER(S) ; TKPD ;= D; for i in 1 to N loop

TKPD TMPD(14 dovnto 0) & TMPD(IS); end loop; return TKPD; end Vrol;

process(DIN, S, C) begin

case с is vhen Lrotate => DOUT <= when Rrotate -> DQUT <= when Llogical DOOT <= when Rlogical => DOUT <= when Larith => DOOT <= Khen Rarith => DOUT <= when others => null; end case; end process; end barrelle.behavioral;

VroKDIM.S) Vror(Di.4,S) VslKDIM.S) Vsrl(Di. l,S) Vsla(DIN,S) Vsra(DIN,S)

Табл. 6.17. Поведенческое VHDL-описание устройства быстрого сдвига, выполняющего 6 видов сдвига

library IEEE;

use IEEE.std logic 1164.all; use IEEE,std logic arith.all;

entity barrelie is port (

DIN: in STD.LOGIC.VECTOR (15 downto 0); S: in UKSIGSED (3 downto 0); C: in STD.LOGIC.VECTOR (2 downto 0); DOOT; out STD.LOGIC.VECTOR (15 downto 0)



ВАШИ СОБСТВЕННЫЕ СДВИГИ

В действительности у языка VHDL-93 есть встроенные операторы свига го1, гог, sll, srl, sla и sra элементов типа array, соответствующие операциям сдвига, перечисленным в табл. 6.3. Так как этих операторов нет в языке VHDL-87, мы определили в табл. 6.17 свои собственные функции. На самом деле, в таблице приведена только одна из них (Vrol); определение остальных функций оставлено читателю в качестве задачи (задача 6.11).

В табл. 6.17 полностью приведена только первая функция (Vrol); остальные подобны ей, за исключением изменения в одной строке. Используемая в цикле for переменная N является результатом преобразования величины сдвига s в целое число. Кроме того, мы присваиваем значение входного вектора D локальной переменной TMPD, которая в цикле for сдвигается N раз. Тело цикла for образует единственный оператор присваивания. В нем берется 15-битовый отрезок слова данных [TMPD (14downtoO) ] и осуществляется к(катенация [&]; результат возвращается в TMPD вместе с битом [TMPD (15) ], который выдвинулся с левого края. Подобными действиями можно описать и другие типы сдвига. Заметьте, что функции сдвига нельзя было бы определить в другом, неповеденческом описании объекта bar re 11 б, например, в структурной архитектуре.

Часть параллельных операторов в этой хитекхуре исчерпывается единственным процессом, список чувствительности юторого составляют все входы объекта. Оператор case этого процесса присваивает результат выходу DOUT, вызывая соответствующую функцию в зависимости от значения сигнала С на входе выбора режима.

Процесс, приведенный в табл. 6.17, является хорошим поведенческим описанием устройства быстрого сдвига, но многие средства синтеза не смогут синтезировать схему по такому описанию. Проблема заключается в том, что большин-ст программных средств требуется, чтобы диапазон цикла for бьш статическим на момент компиляции, тогда как у цикла for в функции Vrol диапазон динамический: он зависит от значения входного сигнала S во время работы схемы.

Ну, действительно трудно представить себе, какую схему могла бы выдать программа синтеза даже в том случае, если бы она бьша способна обрабатывать циклы fore динамическим диапазоном. Это пример того, когда разработчику следует хотя бы немного поруководить средствами синтеза при выборе структуры схемы, если есть желание получить достаточно быстрый и эффективный результат

На рис. 6.2 было показано, как может выглядеть 16-разрядное устройство быстрого сдвига, выполняющее циклические сдвиги влево, собранное из стандартных ИС средней степени интеграции. В этой схеме последовательно один за другим включены четыре 16-разрядных 2-входовых мультиплексора, осуществляющих сдвиг входных данных на О разрядов или на 1, 2, 4 и 8 разрядов в зависимости от значений сигналов S0-S3 соответственно. Подобный характер поведения и структуру такого вида можно описать средствами языка VHDL так, как это сделано в программе, приведенной в табл. 6.18. Несмотря на то, что в программе используется процесс и она написана в поведенческом стиле, можно быть более или менее уверенным в том, что для каждого оператора if в большинстве случаев синтезатор создаст по 2-входовому мультиплексору, которые образуют последовательную цепочку, подобную приведенной на рис. 6.2.



Табл. 6.18. Программа на языке VHDL для 16-разрядного устройства быстрого сдвига, осуществляющего только циклический сдвиг влево

library IEEE;

use IEEE std.logiC.1164 all,

entity rolie IS port С

DIK m SrJ.LCGIC.VFCTOR (15 downto 0), - Data input;s

S m STO.LOGIC.VSCTCR (3 do.nto 0), - Shift amount, 0-15

DOUT out Sn} L0GIC.VECT0R(15 dorfnto 0) - Data bus c-utput

end roll6,

architecture rollb.arch of roll6 is begin

process(DIN, S)

variable X, Y, Z SlD.LOGrC.VECTORClS downto 0), begin

if S(0) = l i,hea X = 2Ша4 downto 0) & 0IN(15); else X .= D14, end if, If S(1) = I then Y := X(13 downto 0) & X(1S downto 14), else Y = X. ena if. If S(2)-l then Z = Y(ll do n+o 0) & Y(15 downto 12), else Z = Y, end ir, it 3(3)=! then DOUT < Z(7 do.nto 0) к Z(lfa aovnto 8), else DOUT <= Z, end if, end process, end roIC.arch,

Ho в решаемой здесь задаче требуется, чтобы устройство быстрого сдвига могло выполнять сдвиг и влево, и вправо. В табл. 6.19 представлена исправленная предыдущая профамма, способная выполнять циклические сдвиги в любом направлении. Направление сдвига задается дополнительным входным сигналом DIR: О - для сдвига влево, 1 - для сдвига вправо. В каждом из звеньев, образующих последовательную цепочку, характер сдвига определяется оператором case, выбирающим одну из четырех возможностей по значению сигнала DIR и того бита S, который управляет этим звеном. Обратите внимание, что мы ввели локальные 2-разрядные переменные CTRLi для хранения пары значений DIR и S (i); каждый оператор case управляется одной из этих переменных. У вас может появиться желание исключить эти переменные и просто управлять каждым оператором case с помощью конкатенации DIR & S (i), но синтаксис языка VHDL не позволяет это сделать, потому что тип конкатенации бьш бы неизвестен

Типичный синтезатор языка VHDL создаст 3- или 4-входовой мультиплексор для каждого оператора case в табл. 6.19. Для последнего оператора case хороший синтезатор сформирует только 2-входовой мультиплексор.

Итак, теперь у нас есть устройство быстрого сдвига, которое будет выполнять циклические сдвиги влево или вправо, но мы сделали еще не все: необходимо позаботиться о логических и арифметических сдвигах в обоих направлениях. На рис. 6.14 представлен наш план завершения проекта. Согласно этому плану наше устройство начинается с блока R0LR16, разработку которого мы только что завершили, а для управления направлением сдвига, в зависимости от сигнала С, используется дополнительная логика.

Теперь необходимо скорректировать некоторые из полученных битов, если выполняется логический или арифметический сдвиг При логическом или арифметическом сдвиге на и разрядов влево мы должны присвоить правым и - 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 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 
Продажа и изготовление мебели.


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