˲ ˲:
  • -
  • ³
  • ij
  • ,
  • '
  • '
  • ˳
  • , '
  • ̳
  • ̳
  • ̳
  • ,
  •  
     

     

     

     

     

     

         
     
         

     

    ,

    : ˲

    ..

    2008 .

    (?!) (). .

    Գ EPF10K20RC240-4 FLEX10K Altera MAX + plus II 10.2 BASELINE MATLAB 6.5.

    ˲ FLEX10K - . , , ' (EAB, Embedded Array Block), , ˲. , .

    ,

    (?!) .

    -:

    -:

    1) 1

    2) 2

    3) 2

    = 3 :

    , , 2, (?!). , :

    .4 Mult_a

    .5 Mult_b .6 Mult_c

    Altera FLEX10K20RC240-4. :

    20000

    1152

    144

    ' ()

    12288

    189

    6

    144

    ʳ

    24

    24

    1

    . MAX + plus . . . ai 2m bi 2n. n m , ( ). m = n = 6.

    MATLAB :

    -

    - (fix);

    - (round);

    - (floor);

    - (ceil);

    , , . .

    (³ : 0,6

    : 29 )

    ( !!)

    .10

    .11

    .12

    .13

    , .

    :

    (DEC)

    (DEC)

    (BIN)

    b1

    0.126464868216455

    8

    1000

    b2

    -0.211575649599258

    -14

    10010

    b3

    0.211575649599257

    14

    1110

    b4

    -0.126464868216455

    -8

    11000

    a1

    1.000000000000000

    -64

    1000000

    a2

    0.927241545063816

    -59

    1000101

    a3

    0.888040485768699

    -57

    1000111

    a4

    0.284717905073458

    -18

    1101110

    2 (??)

    ( ??)

    :

    g (t)

    h (t)

    0

    0,125

    0.125

    1

    -0,334

    -0,209

    2

    0,415

    0,206

    3

    -0,244

    -0,0401

    4

    -0,0488

    -0,0882

    5

    0,148

    0.0588

    6

    -0,0236

    0,0354

    7

    -0,0957

    -0,0595

    8

    0,0678

    0,00865

    9

    0,0302

    0,0354

    10

    -0,0607

    -0,0235

    3

    Գ- .

    . 8- . .

    , 8- . , ˲ . , ( , 16-).

    ( ) ˲. . ˲.

    :

    1. btn - .

    2. reg_in reg_out-

    3. preobr_cod - , ;

    4. filter_gor -

    5. tffe-

    6. l7segment h7segment - (?!), .

    .14

    .

    AHDL

    ˲ FLEX10K :

    ( , ByteBlaster, BiteBlaster, JTAG, );

    ();

    ();

    JTAG . JTAG MSEL0, MSEL1 .

    JTAG (Joint Test Action Group) - ' - (BST - Boundary Scan Test). BST- . BST- . JTAG- : TDI, TDO, TMS, TCK, TRST. JTAG- . JTAG- . ϳ JTAG- ' MasterBlaster ByteBlasterMV.

    1) TDI - . ( , . TCK.)

    2) TDO - . ( , . TCK. - )

    3) TMS - ( BST) ( () TAP. ʳ TCK. TMS TCK.)

    4) TCK - BST ( BST. , TCK.)

    5) TRST- () ( . "0" - BST- . TRST IEEE STD. 1149.1.) [2]

    ( ??)

    AHDL :

    1) ('?):

    , , , , .

    2) (' ?):

    ( ? ! , ) ' , . , Ъ . .

    3) - (' ?):

    8- , , 16- . ( 16- ?? ?)

    , 3 . ' .

    4) ('?)

    5) (?!) ('?) .

    ( .)

    , () (䳿, , ), . :

    . AHDL ;

    . AHDL ;

    AHDL .

    (, , 䳿)

    䳿,

    ( ??), :

    - -115.8

    - -8.63

    :

    : 2,8

    ³, :

    8.63-2.8 = 5.83 .

    , MAX + PLUS II, MATLAB . .

    Matlab 6.5

    MAX + plus II

    (DEC)

    MAX + plus II

    (HEX)

    MAX + plus II

    ()

    1

    0,125

    800

    0320

    0.125

    20

    2

    -0,334

    63398

    F7A6

    -0.334

    A6

    3

    0,415

    2658

    0A62

    0.4153

    62

    4

    -0,244

    63964

    F9DC

    -0.246

    DC

    5

    -0,0488

    65219

    FEC3

    -0.0491

    C3

    6

    0,148

    994

    03B0

    0.1553

    B0

    7

    -0,0236

    65390

    FF6E

    -0.024

    6E

    8

    -0,0957

    64919

    FD97

    -0.0965

    97

    9

    0,0678

    433

    01B1

    0.0676

    B1

    10

    0,0302

    191

    00BF

    0.0298

    BF

    11

    -0,0607

    65147

    FE7B

    -0.0615

    7B

    12

    0,00998

    66

    0042

    0.01

    42

    13

    0,0362

    231

    00E7

    0.0361

    E7

    14

    -0,0242

    65373

    FF5D

    -0.0254

    5D

    15

    -0,0108

    65461

    FFB5

    -0.011

    B5

    4 ³

    Matlab 6.5

    MAX + plus II

    (DEC)

    MAX + plus II

    (HEX)

    MAX + plus II

    ()

    1

    0,125

    800

    0320

    0.125

    20

    2

    -0,209

    64198

    FAC6

    -0.20906

    C6

    3

    0,206

    1320

    0528

    0.20625

    28

    4

    -0,0401

    65285

    FF05

    -0.0397

    05

    5

    -0,0882

    64968

    FDC8

    -00875

    C8

    6

    0,0588

    375

    0177

    0.05859

    77

    7

    0,0354

    230

    00E6

    0.0359

    E6

    8

    -0,0595

    65149

    FE7D

    -0.0592

    7D

    9

    0,00865

    46

    002E

    0.0718

    2E

    10

    0,0354

    237

    00ED

    0.037

    ED

    11

    -0,0235

    65385

    FF69

    -0.02375

    69

    12

    -0,0133

    65451

    FFAB

    -0.0135

    AB

    13

    0,0226

    146

    0092

    0.0228

    92

    14

    -0,00278

    65519

    FFEF

    -0.00285

    EF

    15

    -0,0141

    65445

    FFA5

    -0.01425

    A5

    5 ³

    (??), ) 6400 ( 26 = 64 100).

    ( ?)

    , . 60% 694 . ˲. ' . (??)

    ( ?)

    .. : . - (? ?) 2000 .

    ˲ Altera ' . .. . - (? ?) 2003 .

    .. ALTERA: , . ., -XXI, 2007 (2002).

    .. Altera AHDL. : . ., , 2001 .

    %

    :

    " ˲ "

    : " "

    : 5110

    ..

    : ..

    %

    include "filter.inc";

    include "button.inc";

    include "ppreg.inc";

    include "pk_dk.inc";

    include "7segment.inc";

    constant razx = 8; - ?

    constant razy = 16; - '?

    constant razb = 4;

    constant raza = 8,

    subdesign final

    (

    data [razx-1 .. 0], clk, knopka: input;

    reset: input = gnd;

    out [razy-1 .. 0]: output;

    synhr, h: output;

    la, lb, lc, ld, le, lf, lg: output;

    ha, hb, hc, hd, he, hf, hg: output;

    )

    variable

    preobr_cod: pk_dk with (width = razx);

    h7seg, l7seg: 7segment;

    reg_in: ppreg with (width = razx);

    reg_out: ppreg with (width = razy);

    btn: button with (delay = 1, clock = 3175); - 8000 25175

    filtr_gor: filter with

    (

    wx = 8, - xn

    wy = 16, - yn- ' ??

    wc1 = 5, -- b

    wc2 = 7, -- a

    rs = 6, - b

    ws = 23, - sum

    wp = 23, - result

    b1 = 8, - b1

    b2 = B "10010", - b2

    b3 = 14, - b3

    b4 = B "11000", - b4

    a2 = B "1000101", - a2

    a3 = B "1000111", - a3

    a4 = B "1101110", - a4

    wm = 6-- ?

    ); - !!

    ce: node;

    begin

    reg_in. (clk, reset) = (clk,! reset);

    reg_out. (clk, reset) = (clk,! reset);

    btn.clk = clk;

    filtr_gor. (clk, reset) = (clk,! reset);

    preobr_cod.in [] = data [];

    reg_in.data [] = preobr_cod.out [];

    filtr_gor.vxod [] = reg_in.out [];

    reg_out.data [] = filtr_gor.vixod [];

    out [] = reg_out.out [];

    l7seg.i [] = out [3 .. 0];

    h7seg.i [] = out [7 .. 4];

    (la, lb, lc, ld, le, lf, lg) = l7seg. (a, b, c, d, e, f, g);

    (ha, hb, hc, hd, he, hf, hg) = h7seg. (a, b, c, d, e, f, g);

    btn.btn = knopka;

    ce = btn.out;

    filtr_gor.ce = ce;

    reg_in.ce = ce;

    reg_out.ce = ce;

    synhr = ce;

    h = tffe (VCC, clk,,, ce);

    end;

    %

    Գ

    .. 5110

    ..

    %

    include "mult_a1.inc";

    include "mult_b.inc";

    include "mult_c.inc";

    PARAMETERS

    (

    wx = 8, - xn

    wy = 16, - yn

    wc1 = 5, -- b

    wc2 = 7, -- a

    rs = 6, - b

    ws = 23, - sum

    wp = 23, - result

    b1 = 8, - b1

    b2 = B "10010", - b2

    b3 = 14, - b3

    b4 = B "11000", - b4

    a2 = B "1000101", - a2

    a3 = B "1000111", - a3

    a4 = B "1101110", - a4

    wm = 6 -

    );

    subdesign filter

    (

    vxod [wx-1 .. 0], clk: input;

    ce: input = vcc;

    reset: input = gnd;

    vixod [wy-1 .. 0]: output;

    )

    variable

    sec_up: mult_a1 with (widthx = wx, widthc = wc1 + rs, widths = ws, widthp = Wp, bn = b1 * (2 ^ rs ));

    sec_mid1: mult_b with (widthx = wx, widthy = wy, widthc1 = wc1 + rs, widthc2 = wc2, widthp = wp, an = a2, bn = b2 * (2 ^ rs ));

    sec_mid2: mult_b with (widthx = wx, widthy = wy, widthc1 = wc1 + rs, widthc2 = wc2, widthp = wp, an = a3, bn = b3 * (2 ^ rs ));

    sec_down: mult_c with (widthx = wx, widthy = wy, widthc1 = wc1 + rs, widthc2 = wc2, widthp = wp, an = a4, bn = b4 * (2 ^ rs ));

    V [wy-1 .. 0]: node;

    begin

    sec_mid1. (clock, clken, aclr) = (clk, ce, reset);

    sec_mid2. (clock, clken, aclr) = (clk, ce, reset);

    sec_down. (clock, clken, aclr) = (clk, ce, reset);

    sec_up.xn [] = vxod [];

    sec_mid1.xn [] = vxod [];

    sec_mid2.xn [] = vxod [];

    sec_down.xn [] = vxod [];

    V [] = sec_up.result [wm + wy-1 .. wm];

    sec_mid1.yn [] = V [];

    sec_mid2.yn [] = V [];

    sec_down.yn [] = V [];

    sec_up.sum [] = sec_mid1.result [];

    sec_mid1.sum [] = sec_mid2.result [];

    sec_mid2.sum [] = sec_down.result [];

    vixod [] = V [];

    end;

    %

    .. 5110

    ..

    %

    parameters

    (

    width = 8

    );

    subdesign pk_dk

    (

    in [width-1 .. 0]: input;

    out [width-1 .. 0]: output;

    )

    variable

    sign: node;

    begin

    sign = in [width-1];

    if sign then out [] = (sign,! in [width-2 .. 0]) +1;

    else out [] = in [];

    end if;

    end;

    %

    .. 5110

    ..

    %

    PARAMETERS

    (

    width = 8

    );

    SUBDESIGN ppreg

    (

    data [width-1 .. 0], clk: input;

    ce: input = vcc;

    reset: input = gnd;

    out [width-1 .. 0]: output;

    )

    variable

    out [width-1 .. 0]: dffe;

    begin

    out []. (clk, clrn, ena) = (clk,! reset, ce);

    out [] = data [];

    end;

    %

    .. 5110

    ..

    %

    PARAMETERS

    (

    delay = 1 -

    , clock = 5175 --

    );

    CONSTANT modul = (delay * clock) DIV 1000; -

    ASSERT (modul> 2)

    REPORT " delay * clock 2000 "

    SEVERITY ERROR;

    CONSTANT width = LOG2 (modul);

    CONSTANT end_state = modul-1;

    SUBDESIGN button

    (

    btn: INPUT;

    clk: INPUT;

    out: OUTPUT;

    )

    VARIABLE

    div_out: NODE;

    astart: NODE;

    tr [width-1 .. 0]: dffe;

    BEGIN

    tr []. (clk, ena) = (clk, astart);

    astart = dff (VCC,! btn, div_out,);

    IF tr []. q

    tr []. d = tr []. q + 1;

    ELSE

    tr []. d = 0;

    END IF;

    div_out =! dff ((tr []. q == end_state), clk,,); -

    out = dff (dff (VCC, astart,! out,), clk,,); -

    END;

    %

    %

    %-a-%

    % f | | b%

    %-g-%

    % e | | c%

    %-d-%

    %%

    % 0 1 2 3 4 5 6 7 8 9 A b C d E F%

    %%

    SUBDESIGN 7segment

    (

    i [3 .. 0]: INPUT;

    a, b, c, d, e, f, g: OUTPUT;

    )

    BEGIN

    TABLE

    i [3 .. 0] => a, b, c, d, e, f, g;

    H "0" => 1, 1, 1, 1, 1, 1, 0;

    H "1" => 0, 1, 1, 0, 0, 0, 0;

    H "2" => 1, 1, 0, 1, 1, 0, 1;

    H "3" => 1, 1, 1, 1, 0, 0, 1;

    H "4" => 0, 1, 1, 0, 0, 1, 1;

    H "5" => 1, 0, 1, 1, 0, 1, 1;

    H "6" => 1, 0, 1, 1, 1, 1, 1;

    H "7" => 1, 1, 1, 0, 0, 0, 0;

    H "8" => 1, 1, 1, 1, 1, 1, 1;

    H "9" => 1, 1, 1, 1, 0, 1, 1;

    H "A" => 1, 1, 1, 0, 1, 1, 1;

    H "B" => 0, 0, 1, 1, 1, 1, 1;

    H "C" => 1, 0, 0, 1, 1, 1, 0;

    H "D" => 0, 1, 1, 1, 1, 0, 1;

    H "E" => 1, 0, 0, 1, 1, 1, 1;

    H "F" => 1, 0, 0, 0, 1, 1, 1;

    END TABLE;

    END;

    %

    mult_a1

    %

    INCLUDE "lpm_mult.inc";

    PARAMETERS

    (widthx = 8, - xn []

    widthc = 10, -

    widths = 18, - sum []

    widthp = 18, - result []

    bn = 100 - bn

    );

    SUBDESIGN mult_a1

    (xn [widthx-1 .. 0]: INPUT;

    sum [widths-1 .. 0]: INPUT;

    result [widthp-1 .. 0]: OUTPUT;

    )

    VARIABLE

    mult_x: lpm_mult WITH (

    LPM_WIDTHA = widthx,

    LPM_WIDTHB = widthc,

    LPM_WIDTHP = widthp,

    LPM_WIDTHS = widths,

    INPUT_B_IS_CONSTANT = "YES",

    LPM_REPRESENTATION = "SIGNED",

    USE_EAB = "OFF",

    - LPM_PIPELINE = 1,

    MAXIMIZE_SPEED = 6);

    BEGIN

    mult_x.dataa [] = xn [];

    mult_x.datab [] = bn;

    mult_x.sum [] = sum [];

    result [] = mult_x.result [];

    END;

    %

    mult_b

    %

    INCLUDE "lpm_mult.inc";

    PARAMETERS

    (

    widthx = 8, - xn []

    widthy = 8, - yn []

    widthc1 = 10, - b

    widthc2 = 10, -

    widthp = 18, - result []

    an = 100, - -an ( - hex)

    bn = 100 - bn

    );

    CONSTANT widths = widthp;

    SUBDESIGN mult_b

    (

    xn [widthx-1 .. 0]: INPUT;

    yn [widthy-1 .. 0]: INPUT;

    sum [widths-1 .. 0]: INPUT;

    clock: INPUT;

    clken: INPUT = VCC;

    aclr: INPUT = GND;

    result [widthp-1 .. 0]: OUTPUT;

    )

    VARIABLE

    mult_x: lpm_mult WITH (

    LPM_WIDTHA = widthx,

    LPM_WIDTHB = widthc1,

    LPM_WIDTHP = widthp,

    LPM_WIDTHS = widths,

    INPUT_B_IS_CONSTANT = "YES",

    LPM_REPRESENTATION = "SIGNED",

    USE_EAB = "OFF",

    LPM_PIPELINE = 1,

    MAXIMIZE_SPEED = 6

    );

    mult_y: lpm_mult WITH (

    LPM_WIDTHA = widthy,

    LPM_WIDTHB = widthc2,

    LPM_WIDTHP = widthp,

    LPM_WIDTHS = widths,

    INPUT_B_IS_CONSTANT = "YES",

    LPM_REPRESENTATION = "SIGNED",

    USE_EAB = "OFF",

    - LPM_PIPELINE = 1,

    MAXIMIZE_SPEED = 6

    );

    BEGIN

    mult_x. (clock, clken, aclr) = (clock, clken, aclr);

    mult_x.dataa [] = xn [];

    mult_x.datab [] = bn;

    mult_x.sum [] = mult_y.result [];

    result [] = mult_x.result [];

    mult_y.dataa [] = yn [];

    mult_y.datab [] = an;

    mult_y.sum [] = sum [];

    END;

    %

    mult_c

    %

    INCLUDE "lpm_mult.inc";

    PARAMETERS

    (

    widthx = 8, - xn []

    widthy = 8, - yn []

    widthc1 = 10, - b

    widthc2 = 10, - a

    widthp = 18, - result []

    an = 100, - an

    bn = 100 - bn

    );

    CONSTANT widths = widthp;

    SUBDESIGN mult_c

    (

    xn [widthx-1 .. 0]: INPUT;

    yn [widthy-1 .. 0]: INPUT;

    - sum [widths-1 .. 0]: INPUT;

    result [widthp-1 .. 0]: OUTPUT;

    clock: INPUT;

    clken: INPUT = VCC;

    aclr: INPUT = GND;

    )

    VARIABLE

    mult_x: lpm_mult WITH (

    LPM_WIDTHA = widthx,

    LPM_WIDTHB = widthc1,

    LPM_WIDTHP = widthp,

    LPM_WIDTHS = widths,

    INPUT_B_IS_CONSTANT = "YES",

    LPM_REPRESENTATION = "SIGNED",

    USE_EAB = "OFF",

    LPM_PIPELINE = 1,

    MAXIMIZE_SPEED = 6

    );

    mult_y: lpm_mult WITH (

    LPM_WIDTHA = widthy,

    LPM_WIDTHB = widthc2,

    LPM_WIDTHP = widthp,

    LPM_WIDTHS = widths,

    INPUT_B_IS_CONSTANT = "YES",

    LPM_REPRESENTATION = "SIGNED",

    USE_EAB = "OFF",

    - LPM_PIPELINE = 1,

    MAXIMIZE_SPEED = 6

    );

    BEGIN

    mult_x. (clock, clken, aclr) = (clock, clken, aclr);

    mult_x.dataa [] = xn [];

    mult_x.datab [] = bn;

    mult_x.sum [] = mult_y.result [];

    result [] = mult_x.result [];

    mult_y.dataa [] = yn [];

    mult_y.datab [] = an;

    END;

    http://referat.ru/

         
     
         
     
     
     

     

     

     

     

     

     

     
     
     
      . Reff.net.ua - !