# OR !# NOR ?
a # b OR a OR b a !# b NOR (OR inverter) a NOR b (5<4) ? 3:4 ternary 7 7 8 (7)巨功能模块(LPM功能) Mega功能模块列表: 门类:
lpm_and lpm_inv lpm_bustri lpm_clshift
lpm_mux lpm_or
lpm_constant lpm_xor lpm_decode mux busmux 运算类:
lpm_abs lpm_counter lpm_add_sub lpm_mult lpm_compare 存储类: csfifo lpm_ff
lpm_ram_dq lpm_rom
csdpram lpm_ram_io
lpm_latch lpm_dff (for backward compatibility only) lpm_shiftreg lpm_tff (for backward compatibility only) 其它类: clklock pll ntsc 核心类: a16450 a8255 a6402 fft a6850 rgb2ycrcb a8237 a8251
具体的功能块输入输出信号见Max+plusⅡ软件帮助。
124
ycrcb2rgb
(8)老逻辑功能块(Old-Style Macrofunctions)和宏功能块(Macrofunction) 分类列表:
功能模块 Adders Latches Arithmetic Logic Units Multipliers Buffers Multiplexers Comparators Parity Generators/Checkers Converters Rate Multipliers Counters Registers Decoders Shift Registers Digital Filters Storage Registers EDAC SSI Functions Encoders True/Complement I/O Elements Frequency Dividers
具体的功能块输入输出信号见Max+plusⅡ软件帮助。
(9)基本逻辑功能块(Primitives) 缓冲器类:
CARRY OPNDRN CASCADE SOFT EXP TRI GLOBAL (SCLK) WIRE (GDFs only) LCELL (MCELL)
触发器和琐存器类:
DFF SRFF DFFE SRFFE JKFF
125
TFF JKFFE TFFE LATCH
输入输出端口类:
BIDIR INOUT INPUT IN OUTPUT OUT BIDIRC (GDFs only) INPUTC (GDFs only) OUTPUTC (GDFs only) 逻辑类:
AND NOR NOT OR XNOR XOR NAND VCC (GDFs only) BAND (GDFs only) BNAND (GDFs only) BNOR (GDFs only) BOR (GDFs only) GND (GDFs only)
具体的功能块的功能和输入输出信号见Max+plusⅡ软件帮助。 3.5.3
(1)使用AHDL中的数 例1:
SUBDESIGN decode1 (
address[15..0] : INPUT; chip_enable : OUTPUT; )
126
AHDL的使用例子
BEGIN
chip_enable = (address[15..0] == H\END;
在该例中当地址为十六进制数370时,输出端“chip_enable”输出高电平。
(2)常数和定义函数功能的使用 例1:常数使用例。
CONSTANT IO_ADDRESS = H\常数% SUBDESIGN decode2 (
a[15..0] : INPUT; ce : OUTPUT; ) BEGIN
ce = (a[15..0] == IO_ADDRESS); END;
例2:定义函数使用例。 PARAMETERS (WIDTH);
DEFINE MAX(a,b) = (a > b) ? a : b; %使用定义功能定义的函数,该函数保证端口位数的数量%
SUBDESIGN minport (
dataA[MAX(WIDTH,0)..0] : INPUT; dataB[MAX(WIDTH,0)..0] : OUTPUT; ) BEGIN
dataB[] = dataA[]; END;
(3)布尔表达式的使用 例1:
SUBDESIGN boole1 (
a0, a1, b : INPUT; out1, out2 : OUTPUT;
127
) BEGIN
out1 = a1 & !a0; out2 = out1 # b; END;
例2:具有一个声明的节点 SUBDESIGN boole2 (
a0, a1, b : INPUT; out : OUTPUT; )
VARIABLE
a_equals_2 : NODE; %被声明的节点% BEGIN
a_equals_2 = a1 & !a0; out = a_equals_2 # b; END;
例3:具有组的例。
OPTIONS BIT0 = MSB; %指定BIT0是MSB%
CONSTANT MAX_WIDTH = 1+2+3-3-1; % 声明常数MAX_WIDTH = 2 % SUBDESIGN group1 (
a[1..2], use_exp_in[1+2-2..MAX_WIDTH] : INPUT; d[1..2], use_exp_out[1+2*2-4..MAX_WIDTH] : OUTPUT; dual_range[5..4][3..2] : OUTPUT; ) BEGIN
d[] = a[] + B\
use_exp_out[] = use_exp_in[]; dual_range[][] = VCC; END;
例4:具有条件语句的例。 SUBDESIGN priority (
low, middle, high : INPUT;
128