预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

verilog数字系统设计教程习题答案第二章 HDL既是一种行为描述语言,也是一种结构描述语言。如果按照一定的规则 和风格编写代码,就可以将功能行为模块通过工具自动转化为门级互联的结 构模块。这意味着利用Verilog语言所提供的功能,就可以构造一个模块 间的清晰结构来描述复杂的大型设计,并对所需的逻辑电路进行严格的设 计。 2.模块的基本结构由关键词module和endmodule构成。 3.一个复杂电路系统的完整VerilogHDL模型是由若干个Verilog HDL模块构成的,每一个模块又可以由若干个子模块构成。其中有些模块需 要综合成具体电路,而有些模块只是与用户所设计的模块交互的现存电路或 激励信号源。利用VerilogHDL语言结构所提供的这种功能就可以构造一个 模块间的清晰层次结构来描述极其复杂的大型设计,并对所作设计的逻辑电 路进行严格的验证。 HDL和VHDL乍为描述硬件电路设计的语言,其共同的特点在于:能形式化 地抽象表示电路的结构和行为、支持逻辑设计中层次与领域的描述、可借用 高级语言的精巧结构来简化电路的描述、具有电路仿真与验证机制以保证设 计的正确性、支持电路描述由高层到低层的综合转换、硬件描述与实现工艺 无关(有关工艺参数可通过语言提供的属性包括进去)、便于文档管理、易 于理解和设计重用。 5.不是 6.将用行为和功能层次表达的电子系统转换为低层次的便于具体实现的模块 组合装配的过程。 7.综合工具可以把HDL变成门级网表。这方面Synopsys工具占有较大的优 势,它的DesignCompile是作为一个综合的工业标准,它还有另外一个产 品叫BehaviorCompiler,可以提供更高级的综合。 另外最近美国又出了一个软件叫Ambit,据说比Synopsys的软件更有 效,可以综合50万门的电路,速度更快。今年初Ambit被Cadence公司 收购,为此Cadenee放弃了它原来的综合软件Synergy。随着FPGA设计 的规模越来越大,各EDA公司又开发了用于FPGA设计的综合软件,比较有 名的有:Synopsys的FPGAExpress,Cadenee的Synplity, Mentor的Leonardo,这三家的FPGA综合软件占了市场的绝大部分。 8.整个综合过程就是将设计者在EDA平台上编辑输入的HDL文本、原理图或 状态图形描述,依据给定的硬件结构组件和约束控制条件 进行编译、优化、转换和综合,最终获得门级电路甚至更底层的电路描述网 表文件。用于适配,适配将由综合器产生的网表文件配置于指定的目标器 件中,使之产生最终的下载文件,如JEDECJam格式的 文件 9.在FPGA设计中,仿真一般分为功能仿真(前仿真)和时序仿真(后仿 真)。功能仿真又叫逻辑仿真,是指在不考虑器件延时和布线延时的理想情 况下对源代码进行逻辑功能的验证;而时序仿真是在布局布线后进行,它与 特定的器件有关,又包含了器件和布线的延时信息,主要验证程序在目标器 件中的时序关系。在有些开发环境中,如 XilinxISE中,除了上述的两种基本仿真外,还包括综合后仿真,转换 (post-translate)仿真,映射后(post-map)仿真等,这样做完每 一步都可进行仿真验证,从而保证设计的正确性。 10.仿真的三个阶段: (1)行为仿真:目的是验证系统的数学模型和行为是否正确,对系 统的描述的抽象程度较高。在行为仿真时,VHDL的语法语句都 可以执行。 (2)RTL仿真:目的是使被仿真模块符合逻辑综合工具的要求,使 其能生成门级逻辑电路。在RTL仿真时,不能使用VHDL中一些不可综合和 难以综合的语句和数据类型。该级仿真不考虑惯性延时,但要仿真传输延 时。 (3)门级仿真:门级电路的仿真主要是验证系统的工作速度,惯性 延时仅仅是仿真的时候有用在综合的时候将被忽略。 0声明 模块的端口声明了模块的输入输出端口,其格式如下: Module模块名(端口1,端口2,端口3,端口4,…); I/O说明的格式如下: 输入口:input端口名1,端口名2,…,端口名i;个模块能够在另外一个 模块中被引用,这样就建立了描述的层次。模块实例化语句形式如 下: module_nameinstance_name(port_associations); 信号端口可以通过位置或名称关联;但是关联方式不能够混合使用。端口关联 形式如下: port_expr//通过位置。 .PortName(port_expr)//通过名称。 例[1]: moduleand(C,A,B); in