1 / 220

EDA 技术基础

EDA 技术基础. CPLD 技术及其应用. 硬件描述语言 — AHDL. 什么是 AHDL. A ltera H ardware D escription L anguage 由 Altera 公司开发 集成在 Altera 软件 Max+Plus II 中 描述硬件用语言而不是图形 容易建立 容易修改 对以下设计非常优越 复杂的组合逻辑 BCD 到 7 段编码转换 地址译码 状态机 其他 …. 什么是 AHDL 续 …. 和图形输入一样容易 和其他硬件描述语言一样强大

shyla
Download Presentation

EDA 技术基础

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. EDA技术基础 CPLD技术及其应用

  2. 硬件描述语言— AHDL

  3. 什么是 AHDL • Altera Hardware Description Language • 由Altera公司开发 • 集成在Altera软件 Max+Plus II中 • 描述硬件用语言而不是图形 • 容易建立 • 容易修改 • 对以下设计非常优越 • 复杂的组合逻辑 • BCD到 7段编码转换 • 地址译码 • 状态机 • 其他…

  4. 什么是 AHDL 续… • 和图形输入一样容易 • 和其他硬件描述语言一样强大 • 如HDL (Hardware Description Language) • VHDL, Verilog HDL等

  5. 首先建立工程 Project…

  6. Type in your AHDL design file 怎样使用 ADHL 可使用任何文本编辑器创建文件 Altera软件 Max+Plus II提供文本编辑器

  7. 创建你的 AHDL 文件 续.

  8. 两处须同名 续. • 保存 ADHL 文件名为xxxx.TDF

  9. 当前工程名

  10. 续...

  11. AHDL设计的附加选项

  12. 将这一选项 On/Off 绿色表示注释 兰为ADHL 保留字 打开 Max+Plus II附加选项 • 有些内置的附加选项对工程师在使用AHDL设计进程中有所帮助 • 选项菜单中的语法色彩选项

  13. 可选元素 颜色选定 用户可自行修改颜色选项 • 使用选项菜单中的调色板,自定义如下颜色: • comments, illegal characters, megafunctions, macrofuncitons?

  14. 错误定位 双击错误信息 点击定位按钮 编译过程中的错误定位 • 很容易定位错误

  15. If-then-else case-end case loop-end loop ????? 忘记怎么办? AHDL 模板

  16. 使用 AHDL 模板

  17. 使用AHDL模板

  18. 使用AHDL模板

  19. 修改代码 修改代码 修改代码 使用AHDL模板

  20. 使用 Help 选项

  21. AHDL程序规范

  22. Title Statement • Include Statement • Constant Statement • Define Statement • Parameters Statement • Function Prototype Statement • Options Statement • Design Section • Subdesign Section • Variable Section • Logic Section 可选 必须 程序架构 AHDL

  23. SUBDESIGN file_name • ( input_pin_name : INPUT; • input_bus_name[15..0] : INPUT; • output_pin_name : OUTPUT; • output_bus_name : OUTPUT; • ) • BEGIN • ouptut_pin_name = input_pin_name; • output_bus_name = input_bus_name; • END; 关键字 定义 I/O 口 逻辑项 AHDL 书写格式

  24. 引 言

  25. 1、使用数字

  26. 使用数字 • 数字是用来定义布尔表达式、方程、算术表达式及参数中的常数值,AHDL支持十进制、二进制、八进制及十六进制数。 • SUBDESIGN decode1 • ( • address[15..0] : INPUT; • chip_enable : OUTPUT; • ) • BEGIN • chip_enable = (address[15..0] == H"0370"); • END; • 在此例中,十进制数15-0用来定义地址总线的比特位, 十六进制数H“0370”用来定义被译码的地址。

  27. a0 a1 a2 a3 • SUBDESIGN decode1 • ( a[15..0] : INPUT; • chip_enable : OUTPUT; • ) • BEGIN • chip_enable = (a[15..0] == H“370"); • END; a4 a5 a6 a7 a8 chip_enable a9 a10 a11 a12 a13 a14 a15 AHDL设计1–地址译码器 Graph?

  28. SUBDESIGN decode1 ( a[3..0] : INPUT; chip_enable : OUTPUT; ) BEGIN chip_enable = (a[3..0] == H"7"); END; a0 chip_enable a1 a2 a3 AHDL设计1–地址译码器 AHDL ? chip_enable = a0 & a1 & a2 & !a3

  29. 相关问题 –数字的使用 • Radix: Values: • Decimal <series of digits 0 to 9> • Binary B"<series of 0's, 1's, X's>" • (where X = "don't care") • Octal O"<series of digits 0 to 7>" or • Q"<series of digits 0 to 7>" • Hexadecimal X"<series from 0 to 9, A to F>" or • H"<series from 0 to 9, A to F>" • 例: B"0110X1X10" • Q"4671223" • H"123AECF"

  30. a0 chip_enable a1 a2 a3 为什么使用 AHDL 而不用图形 • 易于修改 • 电路由代码表示 SUBDESIGN decode1 ( a[3..0] : INPUT; chip_enable : OUTPUT; ) BEGIN chip_enable = (a[3..0] == H"A"); END; Chip_enable = !a0 & a1 & !a2 & a3 仅改此处 修改费力 自动解释功能

  31. 更有甚者 SUBDESIGN decode1 ( a[3..0] : INPUT; chip_enable : OUTPUT; ) BEGIN chip_enable = (a[3..0] == B"1x0x"); END; 有些bit位在比较时可忽略

  32. 需要了解的运算符号 • Addition : + • Subtraction : - • Numeric Equality : == • Not equal to : != • Greater than : > • Greater than or equal to : >= • Less than : < • Less than or equal to : <= • Logical OR : # • Logical AND : &

  33. 赋值问题 a[7..0] = (H“2”, H“3”)------- 编译器翻译为 B“00001011” 而不是 B“00100011” a[7..0] = (B"0010", H"3") ------- 编译器翻译为 B“001011” 而不是 B“00100011”,位数不匹配,出错。 建议:用二进制写全。

  34. 2、使用常数和求值函数

  35. CONSTANT IO_ADDRESS = H"0370"; SUBDESIGN decode2 ( a[15..0] : INPUT; ce : OUTPUT; ) BEGIN ce = (a[15..0] == IO_ADDRESS); END; 使用常数

  36. 定义CONSTANT在关键字SUBDESIGN之前 一处修改 CONSTANTIO_ADDRESS = H"A"; SUBDESIGN decode1 ( a[3..0] : INPUT; chip_enable : OUTPUT; ) BEGIN • chip_enable = (a[3..0] == IO_ADDRESS); • IF(a[3..0] == IO_ADDRESS) THEN ... END; 各处自动替换 使用常数功能

  37. 定义一个常数值 定义一个算法式 依靠前一定义值 有关常数的进一步定义 • Constant example CONSTANT IO_ADDRESS = H“70” CONSTANT FOO = 1+2*3 - LOG2(256); CONSTANT FOO_PLUS_one = FOO + 1;

  38. 以下示例定义常数 FAMILY,然后使用它在 Assert陈述中来检查现在的器件是否是 FLEX8000系列。 • PARAMETERS • ( • DEVICE_FAMILY % DEVICE_FAMILY is a predefined Altera parameter % • ); • CONSTANTFAMILY = "FLEX8000"; • SUBDESIGN strcmp • ( • a : INPUT; • b : OUTPUT; • ) • BEGIN • IF (DEVICE_FAMILY == FAMILY) GENERATE • ASSERT • REPORT"Detected compilation for FLEX8000 family" • SEVERITYINFO; • b = a; • ELSEGENERATE • ASSERT • REPORT"Detected compilation for % family" • DEVICE_FAMILY • SEVERITYERROR; • b = a; • ENDGENERATE; • END;

  39. 使用DEFINE定义求值函数 • 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; 使用求值函数

  40. 3、定义组

  41. 定义组 • 组可以用下列三中方式声明: • 1、一个单域组包含符号名或端口名,后随用方括弧括起的单域。例: a[4..1]。 • 一旦组被定义,[]就可用来简化定义整个域。 • 一个单数字可用来替换一个域,例: a[5],此时和a5等价。 • 2、一个双域组包含符号名或端口名,后随用方括弧括起的双域。例: d[6..0][2..0]。 • 双于域组被用来设计两维总线结构。一旦组被定义,[][]就可用来简化定义整个域。一个单独的节点可被命名为name[y][z]或 name y_z。 y和z为数字。 • 3、一个序列组包含一个符号名、端口和数字的列表 ,以逗号分隔,以圆括弧括起。例: (a, b, c)。单域和双域也可以列表用圆括弧括起或作为列表内容。例:(a、b、c[5..1])。 • 定义组示例: • b[5..0] • (b5, b4, b3, b2, b1, b0) • b[] • b[log2(256)..1+2-1] • b[2^8..3 mod 1] • b[2*8..8 div 2]

  42. 定义组 一个组(GROUP)最多包含256个成员或BITS,当作一个节点集看待,操作时当作一个整体。一个组可定义为单域名、双域名或序列域名形式。 例:单域名组 a[4..1]包含节点a4、a3、a2、a1。 双域名组 a[2..1][5..3]包含节点a2_5、a2_4、a2_3、a1_5、a1_4、a1_3。 序列域名 (a、b、c)包含节点a、b、c。 在布尔方程中,一个组可被赋予一个布尔表达式、其他组、一个单节点、VCC、GNG、1或0。在每一种情况中,组获得的值是不同的。 Options 说明可用于定义组中最低数字的比特位是MSB还是LSB。 1、一旦组被定义,[]就可用来简化定义整个域。例:a[4..1]可被缩写为a[],同样, b[5..4][3..2]可简写为 b[][]。 2、为避免混淆组名,在组名中禁止使用数字尾缀。例:编译器分不清组 q1[15..0]和 q11[15..0]。

  43. 组的定义–实例 OPTIONSBIT0 = 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"10"; use_exp_out[] = use_exp_in[]; dual_range[][] = VCC; END;

More Related