




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
引言咱们数电PLD实验关于AHDL的入门教程,看看蛮有劲第一章 概 述本章将对Altera硬件描述语言(Altera Hardware Description Language)作简要地描述,还要讲述如何处理AHDL文件,介绍AHDL语言的基本概念和基本元素,以使学生能够更好地使用AHDL设计电路。一、 AHDL简要介绍AHDL语言是Altera公司设计的配合Altera MAX+PLUS设计软件使用的一种硬件描述语言。它是一种模块化的高级语言,完全集成于MAX+PLUS系统中,它将用户的设计以各种设计文件(文本设计文件TDF、图形设计文件GDF等等)形式保存,并可对其进行编译(COMPILE)、调试、检错、模拟(SIMULATE)、下载(DOWNLOAD)等操作。这些操作都在MAX+PLUS开发系统中完成。AHDL语言还特别适合于描述复杂的组合逻辑、组(group)运算、状态机、真值表和时序逻辑。一个TDF文件中必须包含一个子设计段和一个逻辑段。l 子设计段(Subdesign Section ): 说明TDF文件的输入、输出和双向端口。 l 逻辑段(Logic Section):定义文件中各种逻辑运算。AHDL是一种并行语言。在TDF文件逻辑段中所定义的所有动作都是同时进行的,而不是串行的。给同一个AHDL结点或变量赋值的多个等式在逻辑上是相联的(如果该结点或变量是高电平有效,那么这些等式之间就是“或”的关系,如果是低电平有效,就是“与”的关系)。二、 AHDL语言的基本元素AHDL包含许多基本元素,用以在语句中对各种逻辑进行描述。本章讲述如何用AHDL语言进行设计,介绍这些基本元素和基本语句的使用。(一) 基本概念以下介绍AHDL语言的基本概念,这些概念无论是在时序逻辑电路设计还是在组合逻辑电路设计中都是组成AHDL 语言(TDF文件)的最基本元素。1.数值数值被用来在布尔表达式和等式中指定常量值。AHDL支持十进制数、二进制数、八进制数和十六进制数的所有组合。数值在AHDL中是以以下形式表示的:数制值十进制二进制B“”X表示无关项八进制O“”十六进制H“”下面是AHDL有效数字的例子:B“0110X1X10”,O “4761223”,H“123AECF”,787878。注意:l MAX+PLUS编译器总把数值编译成一组二进制数。l 数值不能赋值给结点(NODE),而必须用Vcc和GND。编程举例:下例中的decodel.tdf文件表示一个地址译码器,当地址为十六进制数370时产生一个高电平有效的地址使能信号。SUBDESIGN decode1(address15.0 : INPUT;chip_enable : OUTPUT;)BEGINchip_enable = (address15.0= H“0370”);END;在这个例子中,15和0这两个十进制数字用以指定地址总线上的位。十六进制数子H“0370”表示被译码的地址。图1-1表示一个与decode1.tdf具有相同功能的图形设计文件(.gdf)。图1-1 decode1.gdf2. 常量在AHDL文件中,常量代表数值的描述性名称。这个名称可以在文件中到处使用,它比数值更直观。例如,常量UPPER_LIMIT就比一个数值103更加直观。在AHDL中,常量由Constant语句定义。下面的decode2.tdf文件与decode1.tdf具有相同的功能,但它用常量IO_ADDRESS代替了数值H“370”。CONSTANT IO_ADDRESS= H“0370”;SUBDESIGN decode2(a15.0 : INPUT ;ce : OUTPUT;)BEGINce = (a15.0= IO_ADDRESS);END;注意:常量对于在文件中多次重复使用同一个数值的这种情况是十分有用的,如果要修改这个值,只要修改CONSTANT语句就可以了。3.模板在MAX+PLUS中建立一个AHDL设计的最快办法就是使用模板。模板是为方便TDF文件输入而准备的一定格式的未完成的语句,用户只要在相应位置添上所需内容就可以完成语句。利用MAX+PLUS文本编辑器所提供的Template命令(在Template菜单中),学生可以向自己的TDF中插入一个AHDL模板,这样可以加快设计文件的输入速度。选择Template命令后,在屏幕上就会显示如下图1-2所示的对话框。图1-2 AHDL模板对话框在AHDL的所有模板中有一个完整AHDL文件结构的模板,叫做“Overall structure”,在该模板中,所有AHDL结构按照它们应该在TDF文件中出现的顺序以注释形式分别列在不同行中。这些段和语句并不是以准确的语法规则写出,必须按自己的需要以符合AHDL语法规则的语句或段来替换这些注释行。MAX+PLUS还提供了许多AHDL结构的模板。这些模板按字母顺序排列,可用这些模板替代“Overall structure”模板中的各注释行。下例给出了Defaults语句的模板。DEFAULTS_node_name = _constant_value;END DEFAULTS;一旦在文件中插入一个模板,就必须把模板中所有待定符用自己的标识符和表达式替代。每一个待定符都以两个下划线(_)开始,以便于识别,每个关键字都要大写。AHDL语言概述(2)2009-03-09 22:044结点和组结点是由变量段的结点说明语句定义的,它可被用来记载一个中间表达式的值。结点在AHDL中十分类似于变量在计算机高级语言(如C)中的作用。如果一个布尔表达式要被重复使用,结点定义就显得十分有用了。该布尔表达式可用一个结点名称替代,这更便于提高设计的可读性。下例的boole1.tdf文件与P.6页的boole2.tdf具有同样的逻辑,但它只有一个输出。SUBDESIGN boole1(a0 ,a1, b : INPUT;out : OUTPUT;)VARIABLEa_equals_2 : NODE;BEGINa_equals_2 =a1 & !a0;out = a_equals_2 # b;END;在这个文件中定义了一个结点a_equals_2,并把表达式a1 & !a0的值赋给它。图1-3给出了与boole1.tdf具有同样逻辑功能的GDF文件。注意:在多个表达式中使用同一个结点,可以节省可编程器件的资源。组的定义:一个组最多可包含256个成员(或者说“位”),它是许多结点的集合,并被当作一个整体来操作。在布尔等式中,一个组可以被设置成等于一个布尔表达式的值、另一个组的值、一个单独的结点的值、Vcc、GND、1或0,在上述各种情况下,组的值是不同的。一个组被定义之后, 可用来代表该组的所有单元。例如:a4.1可用a 来代表。 下例中的group1.tdf给出了一个定义了两个组的简单的布尔等式。SUBDESIGN group1(a1.2 :INPUT;d1.2 :OUTPUT;)BEGINd =a +B“01”;END;在这个例子中,数字1(十进制)被加到组a 上。如果a 的初值是00,那么这个程序的结果就是d =1(数字)。下面的例子给出了正确的组值l 如果一个组被设置为等于另外一个组,那么这两个组的位数必须相同,第一组的各位分别与第二组相应的位相连。例d2.0 =q8.6,即d2与q8相连,d1与q7相连,d0与q6相连。 l 当一个组被设置等于一个单独的结点时,这个组的所有位都与该结点相连。例d2.0 = n, 即d2、d1和d0与n相连。如果一个组被设置等于Vcc或GND,那么该组的所有位都被设置为该值。例d2.0 = Vcc,即d2、d1和d0都连为Vcc。l 如果一个组被设置等于1(十进制数), 那么该组只有最低有效位被连到Vcc上,而其它位都被连接到GND上。例d2.0 = 1,即只有d0被连到Vcc上;数值“1”被扩展为B“001”。AHDL语言概述(3)2009-03-09 22:045布尔表达式布尔表达式由操作数及它们之间的逻辑运算符、算术运算符、比较符、括号组成。布尔表达式可以用在布尔等式中,还可以用在IF、CASE等语句中。(1) 逻辑运算符 AHDL支持以下这些逻辑运算符:运算符实例说明!或 NOT!tob 或 NOT ACC求反(求非)运算&或ANDbre&butt或bre AND butt与!&或 NANDA3.1 !& b5.3与非# 或 ORTrick # treat或!# 或 NORC !# d或非$或 XORFoo $ boo异或!$ 或 XNORX2 !$ X4同或(2) 算术运算符运算符实例说明+ (一元)+1正号- (一元)-a7.4负号+Count7.0 + Delta7.0加-Right - left减注意:l AHDL仅支持以上算术运算,其它运算(乘或除)必须调用器件才能实现。l 运算符只能用在都为结点组或数值的两个操作数之间。l 如果两个操作数都是结点组,那么这两组的长度必须相同。l AHDL还支持“=”、“!=”、“”、“=”、“”、“= ”等算术比较符。(3) 布尔表达式布尔表达式是由一组被运算符或比较符(有时还有括号)分隔开的结点、数值、常量和另外的一些布尔表达式所组成,布尔等式则是把一个布尔表达式的值赋给一个结点或组。下面的boole2.tdf文件给出了两个简单的布尔表达式,它们各表示一个逻辑门。SUBDESIGN boole2(a0, a1,b :INPUT;out1, out2 :OUTPUT;)BEGINout1 = a1 & ! a0;out2 = out1 # b;END;在boole2.tdf中,out1由a1和反向的a0的逻辑“与”所驱动,而out2由out1和b的逻辑“或”所驱动。由于这两个等式是同时运算的,所以它们在文件中的顺序无关紧要。下图1-4给出了与boole2.tdf具有相同功能的GDF。AHDL语言概述(4)2009-03-09 22:05(二) 基本语句AHDL语言拥有大约40个保留关键字,其中大部分构成了AHDL的所有行为语句。本节仅介绍其中最基本的一些语句。这些语句是构成AHDL组合逻辑和时序逻辑的基本单元。1 变量声明语句在变量声明语句中可以声明一些在本模块内部使用的变量,例如状态机,寄存器等。变量声明格式:VARIABLE变量符号:变量类型;状态机、寄存器等变量的具体声明格式,将在后面介绍。2 IF语句AHDL的条件语句是实现组合逻辑的基本方法,条件语句包括IF语句、CASE语句、真值表语句等。IF 语句格式:IF THEN 语句1ELSIF 语句2END IF;注:为布尔表达式。如果表达式值为“真”(或是“Vcc”)则执行THEN后的语句1,否则执行ELSIF后的语句2。AHDL中ELSIF 为可选项,并允许IF语句嵌套。下例中,Priority.tdf是一个优先级编码器,它把当前输入中处于有效状态的级别最高的输入级转化为一个数值。它产生一个2位代码,表示由Vcc驱动的优先级最高的那个输入端。SUBDESIGN priority(low, middle, high : INPUT;hightest_level1.0 : OUTPUT;)BEGINIF high THEN hightest_level =3;ELSIF middle THEN hightest_level =2;ELSIF low THEN hightest_level =1;ELSE hightest_level =0;END IF;END;下图1-5给出了与Priority.tdf具有相同功能的GDF文件。图1-5 Priority.gdf在这个例子中,程序要查看high、middle和low这三个输入端是否由Vcc驱动,然后去执行跟在条件成立的IF或ELSE从句后的那个等式,也就是说如果high是由Vcc驱动的,那么hightest_level就是3。如果有多个输入都由Vcc驱动,那么IF语句就会根据IF和ELSE语句的顺序来确定输入的优先级(第一个语句的优先级最高)。在Priority.tdf中,high的优先级最高,middle的优先级次之,low的优先级最低。IF语将执行跟在布尔表达式的值为真的优先级最高的IF或ELSE语句后的那个等式。如果所有输入端都不是由Vcc驱动的,跟在ELSE关键字后的那个等式就会被执行。AHDL语言概述(5)2009-03-09 22:063 CASE语句CASE语句也是条件语句,它的格式是: CASE 组 ISWHEN 值1 = 语句1WHEN 值2 = 语句2WHEN 值3 = 语句3END CASE;CASE语句根据组的取值选择执行相应语句。下例中, decoder.tdf是一个2位转为4位的译码器。它把一个二进制的代码输入转化为一个只有一位为1(“one-hot”)的代码。 SUBDESIGN decoder ( code1.0 : INPUT; out 3.0 : OUTPUT; ) BEGIN CASE code IS WHEN 0 = out =B“0001”;WHEN 1 = out =B“0010”;WHEN 2 = out =B“0100”;WHEN 3 = out =B“1000”; END CASE; END;在这个例子中,输入组code1.0有值0、1、2和3。Case语句中跟在符号=后的等式将被执行。例如,如果code为1,那么out 就会被设置为B“0010”。由于左侧表达式的值互不相同,所以在一个时刻只会有一个WHEN从句被执行。图1-6给出与decoder.tdf具有相同功能的GDF。图1-6 decoder.gdfl IF语句与CASE语句的比较IF语句与CASE语句大致相同,在某些情况下无论使用哪种语句都会得到相同结果。下面的例子给出了采用IF与CASE两种语句所表示的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年甘肃省平凉市崆峒区殡仪馆招聘合同制工作人员模拟试卷及完整答案详解1套
- 2025南平绿发建设工程劳务管理有限公司招聘14人模拟试卷及答案详解(名师系列)
- NSC-409012-生命科学试剂-MCE
- 2025年安庆望江县中医医院赴高校招聘19人考前自测高频考点模拟试题及一套答案详解
- 2025年甘肃省天水天光半导体有限责任公司招聘18人模拟试卷及一套答案详解
- 2025年武术文化的考试题及答案
- 励志英语作文真题及答案
- 2025年环保学院单招试题及答案
- 四川2025自考数字戏剧数字表演技术考前冲刺练习题
- 2025年资产负债分析试题及答案
- 40篇英语短文搞定高考3500个单词(全部含翻译,重点解析)
- 江苏艺考笔试题及答案
- 2025年中考语文作文中考12大主题作文模板!-分步详解+例文示范
- 2025年北京市房山区九年级初三一模英语试卷(含答案)
- 餐饮连锁稽核管理制度
- 详细操作说明书及维修指导手册
- 中国精神障碍防治指南课件
- 《中国的经济发展概览》课件
- 高职高考数学复习第五章数列5-2等差数列课件
- 矿泉水卫生管理制度
- 慢性肺源性心脏病的护理(内科护理学第七版)
评论
0/150
提交评论