Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AHDL.doc
Скачиваний:
20
Добавлен:
08.11.2018
Размер:
869.89 Кб
Скачать

1. Пример использования lpm_and, _or, _xor, _inv функций

INCLUDE “lpm_and.inc”; INCLUDE “lpm_or.inc”; INCLUDE “lpm_xor.inc”; INCLUDE “lpm_inv.inc” SUBDESIGN example1 ( a[3..0][1..0] : INPUT; f_and[1..0],f_or[1..0],f_xor[1..0] : OUTPUT; f_inv[1..0] : OUTPUT; ) VARIABLE b[1..0] : NODE; BEGIN f_and[]=lpm_and(.data[][]=a[][]) WITH (LPM_SIZE=4,

LPM_WIDTH=2) RETURNS (.result[]);

f_or[]=lpm_or(.data[][]=a[][]) WITH (LPM_SIZE=4, LPM_WIDTH=2) RETURNS (.result[]);

f_xor[]=lpm_xor(.data[][]=a[][]) WITH (LPM_SIZE=4, LPM_WIDTH=2) RETURNS; (.result[]);

b[]=f_and[]

f_inv[]=lpm_inv(.data[]=b[]) WITH (LPM_WIDTH=2)

RETURNS (.result[])

END;

2. Пример использования функции lpm_decode

INCLUDE “lpm_decode.inc”;

SUBDESIGN example2

( en,a[2..0] : INPUT;

dec[7..0] :OUTPUT;

)

BEGIN dec[]=lpm_decode(.data[]=a[],.enable=en) WITH (LPM_WIDTH=3, LPM_DECODES=8) RETURNS (.eq[]); END;

3. Пример использования функций lpm_mux, busmux, mux

INCLUDE “lpm_mux.inc”;

INCLUDE “busmux.inc”;

INCLUDE “mux.inc”;

SUBDESIGN example3

( aa[3..0][1..0],select[1..0] : INPUT;

a[7..0],b[7..0],sel,sel_mux[2..0] : INPUT;

oout[1..0] : OUTPUT;

out[7..0],out_mux : OUTPUT;

) BEGIN oout[]=lpm_mux(.data[][]=aa[][],.sel[]=select[]) WITH (LPM_SIZE=4, LPM_WIDTH=2, LPM_WIDTHS=2)

RETURNS (.result[]);

out[]=busmux(.dataa[]=a[],.datab[]=b[],.sel=sel) WITH (WIDTH=8) RETURNS (.result[]);

out_mux=mux(.data[]=a[],.sel[]=sel_mux[]) WITH (WIDTH=8, WIDTHS=3)

RETURNS (.result);

END;

  1. Пример использования функций lpm_counter, _latch, _ff,

_shiftreg, _bustri

INCLUDE “lpm_counter.inc”;

INCLUDE “lpm_latch.inc”;

INCLUDE “lpm_ff.inc”;

INCLUDE “lpm_shiftreg.inc”;

INCLUDE “lpm_bustri.inc”;

CONSTANT width_data = 8;

SUBDESIGN example4

( clock : INPUT; reset : INPUT; enable,en_clock : INPUT; data[7..0] : INPUT; set,load : INPUT; data_latch[width_data-1..0] : OUTPUT; data_ff[width_data-1..0],shift,count[2..0] : OUTPUT; en_data : INPUT; ZZ[2..0] : BIDIR; ) BEGIN shift=lpm_shiftreg(.clock=clock, .enable=enable, .data[]=data[], .load=set, .aclr=reset) WITH (LPM_WIDTH=8, LPM_DIRECTION=”RIGHT”)

RETURNS (.shiftout);

data_latch[]=lpm_latch(.data[]=data[], .gate=load)

WITH (LPM_WIDTH=width_data)

RETURNS (.q[]);

data_ff[]=lpm_ff(.data[]=data[], .clock=clock,.aclr=reset, .aset=load)

WITH (LPM_WIDTH=width_data)

RETURNS (.q[]);

count[]=lpm_counter(.clock=clock, .clk_en=en_clock, .aclr=reset) WITH (LPM_WIDTH=3)

RETURNS (.q[]);

ZZ[]=lpm_bustri(.data[]=count[],.enabledt=en_data) WITH(LPM_WIDTH=3)

RETURNS(.tridata[]) END;

5. Пример использования функций lpm_add_sub, _compare, _mult

INCLUDE “lpm_add_sub.inc”;

INCLUDE “lpm_compare.inc”;

INCLUDE “lpm_mult.inc”;

SUBDESIGN example5

( a[3..0],b[3..0] : INPUT;

as[3..0] : OUTPUT;

add_sub : INPUT;

comp1, comp2 : OUTPUT;

mult[7..0] : OUTPUT;

) BEGIN as[]=lpm_add_sub(.dataa[]=a[],.datab[]=b[],.add_sub=add_sub)

WITH (LPM_REPRESENTATION=”UNSIGNED”,

LPM_WIDTH=4)

RETURNS (.result[]);

(comp1,comp2)=lpm_compare(.dataa[]=a[],.datab[]=b[])

WITH (LPM_REPRESENTATION=”UNSIGNED”,

LPM_WIDTH=4)

RETURNS (.aeb,.agb)

mult[]=lpm_mult(.dataa[]=a[],.datab[]=b[]) WITH (LPM_REPRESENTATION=”UNSIGNED”,

LPM_WIDTHA=4, LPM_WIDTHB=4, LPM_WIDTHP=8,

LPM_WIDTHS=4) RETURNS (.result[]); END;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]