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

Табл. 5.58. Поведенческая VHDL-программа для комбинационного умножителя 8x8

library IEEE;

use IEEE.std logic 1164.all;

entity vmul8x8p is

port ( X: in STD.LOGIC.VECTOR (7 downto 0);

Y: in STD.LOGIC.VECTOR (7 downto 0);

P: out STD.LOGIC.VECTOR (15 downto 0) ); end vmul8x8p;

architecture vmul8x8p arch of vmul8x8p is function MAJ (II, 12, 13: STD.LOGIC) return STD.LOGIC is begin

return ((II and 12) or (II and 13) or (12 and 13)); end MAJ; begin

process (X, Y)

type array8x8 is array (0 to 7) of STD.LOGIC.VECTOR (7 downto 0); variable PC: array8x8; - product component bits variable PCS: array8x8; - full-adder sum bits variable FCC: array8x8; - full-adder carry output bits variable RAS, RAC: STD.LOGIC.VECTOR (7 downto 0); - ripple adder sum begin - and carry bits

for i in 0 to 7 loop for j in 0 to 7 loop

PC(i)(j) := Y(i) and X(j); ~ compute product component bits end loop; end loop; for j in 0 to 7 loop

PCS(0)(j) := PC(0)(j); ~ initialize first-row virtual PCC(0)(j) := 0; - adders (not shown in figure)

end loop;

for i in 1 to 7 loop ~ do all full adders except last row

for j in 0 to 6 loop

PCS(i)(j) := PC(i)(j) xor PCS(i-l) (j + 1) xor PCC(i-l)(j); PCC(i)(j) := MAJ(PC(i)(j), PCS(i-l)(j+l), PCC(i-l)(j)); PCS(i)(7) := PC(i)(7); - leftmost virtual adder sum output end loop; end loop; RAC(O) := 0;

for i in 0 to 6 loop - final ripple adder

RAS(i) := PCS(7)(i+l) xor PCC(7)(i) xor RAC(i);

RAC(i+l) := MAJ(PCS(7)(i+l), PCC(7)(i), RAC(i)); end loop;

for i in 0 to 7 loop

P(i) <= PCS(i)(0); -- first 8 product bits from full-adder sums end loop;

for i in 8 to 14 loop

P(i) <= RAS(i-8); - next 7 bits from ripple-adder sums end loop;

P(15) <= RAC(7); -- last bit from ripple-adder carry

end process; end vmul8x8p.arcb;



РСЗ(в)С7) -

PCS(7)(7)

шшшт

PCS(O)O) -

P0S(1)(7) -РСС(1)(6) PCS(1)(e) -

PCS(2)(7) -

[ *. >ft 1 11л*

. (4(0)

PCC PCS

>cs

(2)(0)

14 PCS (7)(0)

POS (3K0)

PCS (2K0)

D3/ED/S/E/D3 03 Й Ш/Ш Ш m ED Ш Ш Ш и

RA0(7) RAC(6) RAC(5) RAS(3) RAS(2) RAS(1) RAC(1) BAC(O)

Рис. 5.100. Имена переменных в VHDL-программе для умножителя 8x8

В программе предпринята попытка показать логические вентили, которые использовались бы в реализации, точно соответствующей рис. 5.99, хотя синтезатор имеет право на основе этой поведенческой программы создать совершенно другую структуру. Если вы хотите задать определенную структуру, то необходимо написать структурную VHDL-программу, о чем речь пойдет ниже.

В первом вложенном операторе for в программе выполняются 64 операции И, в результате которых получаются биты компонентов произведения. Следующий оператор цикла for инициализирует граничные условия вверху умножителя, используя понятие 0-й строки виртуальных полных сумматоров, не показанных на рисунке, у которых выходы сумм равны первой строке битов в массиве PC, а выходы переносов равны 0. Третий вложенный цикл for соответствует основному массиву сумматоров, изображенных на рис. 5.99 во всех строках, кроме последней, которая реализуется четвертым циклом for. В последних двух циклах for сигналам на выходах умножителя присваиваются значения, ввзникающие на выходах сумматора со сквозным переносом.

Применяя структурный подход можно написать другую VHDL-профамму, как показано в табл. 5.59. Этот подход позволяет разработчику полностью задавать структуру синтезируемой схемы, например, в том случае, когда желательно реализовать ее в специализированной ИС. В программе предполагается, что архитектуры AND2, X0R3 и MAJ3 определены в другом месте, например, в библиотеке данной специализированной ИС.

В одномерных массивах RAS и RAC хранятся суммы и переносы сумматора со сквозным переносом. На рис. 5.100 приведены обозначения и нумерация переменных. Целые переменные i и j используются в качестве индексов циклов по строкам и столбцам соответственно.



Табл. 5.59. Структурная VHDL-архитектура для 8x8 комбинационного умножителя

architecture vmul8x8s arch of vmul8x8s is component AND2

portC 10, II: in STD.LOGIC; 0: out STD.LOGIC ); end component; component X0R3

port( 10, II, 12: in STD.LOGIC; 0: out STD.LOGIC ); end component;

component MAJ - Majority function. 0 = 10*11 + 10*12 + 11*12 port( 10, II, 12: in STD.LOGIC; 0: out STD.LOGIC ); end component;

type array8x8 is array (0 to 7) of STD.LOGIC.VECTOR (7 downto 0);

signal PC: array8x8; - product-component bits

signal PCS: array8x8; - full-adder sum bits

signal PCC: array8x8; - full-adder carry output bits

signal RAS, RAC; STD.LOGIC.VECTOR (7 downto 0); - sum, carry

begin

gl: for i in 0 to 7 generate - product-component bits

g2: for j in 0 to 7 generate

Ul: AND2 port map (VCi), X(j) , PC(i)(j));

end generate; end generate;

g3: for j in 0 to 7 generate

PCS(0)(j) <= PC(0)(j); - initialize first-row virtual adders

PCC(0)(j) <= 0; end generate;

g4: for i in 1 to 7 generate - do full adders except the last row g5: for j in 0 to 6 generate U2: XORS port шар (PC(i) (j) ,PCS(i-l) (j+l) ,PCC(i-l) (j) ,PCS(i.Kj)); US: MAJ port map (PC(i)(j),PCS(i-l)(J+1),PCC(i-l)(j),PCC(i)(j)); PCS(i)(7) <= PC(i)(7); - leftmost virtual adder sum output end generate; end generate; RAC(O) <= 0;

gB: for i in 0 to 6 generate - final ripple adder

U7: X0R3 port map (PCS(7)(i+1), PCC(7)(i). RAC(i), RAS(i)); US: MAJ port map (PCS(7) (i+1), PCC(7)(i), RAC(i), RAC(i+l));

end generate;

g7: for i in 0 to 7 generate

P(i) <= PCS(i)(0); - get first 8 product bits from full-adder sums end generate;

g8-. for i in 8 to 14 generate

P(i) <= RAS(i-8); - get next 7 bits from ripple-adder sums end generate;

P(15) <= RAC(7); ~ get last bit from ripple-adder carry end vmul8x8s arch;



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 
Продажа и изготовление мебели.


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