使用VerilogHDL硬件描述语言设计复杂数字逻辑-Read.docVIP

使用VerilogHDL硬件描述语言设计复杂数字逻辑-Read.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用VerilogHDL硬件描述语言设计复杂数字逻辑-Read.doc

使用Verilog HDL 硬件描述语言设计复杂数字逻辑 第一课 一.概述 本课程的内容 学习使用Verilog HDL 进行复杂数字逻辑的设计 什么是HDL(Hardware Description Language) 是一种用形式化的方法来描述数字电路和设计数字逻辑系统的语言。 用HDL来设计数字逻辑的一般方法 传统方法: - 查用器件手册 - 选用合适的微处理器和电路芯片 - 设计面包板和线路板 - 调试 - 定型 现代的设计方法: - 选用合适的 EDA仿真工具; - 选用合适电路图输入和HDL编辑工具; - 逐个编写可综合HDL模块; - 逐个编写HDL测试模块; - 逐个做HDL 电路逻辑访真; - 编写HDL总测试模块; - 做系统电路逻辑总仿真; 定型, FPGA编码或ASIC投片 现代设计方法的优点 ?电路的逻辑功能容易理解; ?便于计算机对逻辑进行分析处理; ?把逻辑设计与具体电路的实现分成两个独立的阶段来操作; ?逻辑设计与实现的工艺无关; ?逻辑设计的资源积累可以重复利用; ?可以由多人共同更好更快地设计非常复杂的逻辑电路(几十万门以上的逻辑系统)。 Verilog HDL 起源 发展 特点 其他的硬件描述语言 VHDL[ VHSIC(Very High Speed Integrated Circuit) Hardware Description Language] VHDL和Verilog 风格比较(例clock_16.v .vhd) 本课的目标 a.能够使用verilog HDL 设计复杂数字逻辑 b.能够通过对设计进行仿真以验证设计的正确性 c.了解大规模可编程逻辑器件(CPLD FPGA)的设计过程(设计,仿真,管脚分配,逻辑下载) 一些概念 综合(synthesize) 抽象的描述——〉具体电路形式 可综合和不可综合 抽象级别(行为级,RTL级,门级) 行为级:技术指标和算法的Verilog描述 RTL级:逻辑功能的Verilog描述 门级: 逻辑结构的Verilog描述 图例:synplify adder.v d.布局布线 e.仿真(simulation) 模型,前仿真,综合后仿真,时序仿真(后仿真) 工具软件 10/pub/software/eda /!软件/电子工程software modelsim 5.5b e 5.6 synplify 6.24 7.0 7.1 maxpluss II 10.1 硬件 可编程逻辑器件(PLD) GAL 通用可编程逻辑 CPLD 复杂可编程逻辑器件 FPGA 现场可编程门阵列 ASIC[ Application Specific IC] 可编程逻辑器件与ASIC相比,设计周期短,设计制造成本低,可重复编程(在线可编程),广泛应用于产品原型机设计和小批量生产(5000件以下) 二.语法基础(教材第3章) 程序结构 module adder(cout,sum,a,b,cin); //模块名,输入输出信号列表 input [2:0] a,b; //输入输出信号定义 input cin; output cout; output [2:0] sum; //功能描述 assign {cout,sum}=a+b+cin; endmodule ----------------------------------------------------- module t_adder; reg [2:0] a1,b1; reg cin1; wire cout1; wire [2:0] sum1; adder u1(cout1,sum1,a1,b1,cin1); //adder模块调用 initial begin a1=0; b1=0; cin1=0; # 100 a1=1; # 100 b1=2; # 100 cin1=1; # 1000 a1=2; b1=3; cin1=0; $stop; end endmodule 程序基本单位是module module之间可以象元件一样调用(使用) 一个模块以module 开始 endmodule结束 module的语法 端口定义(input output inout) f.功能单元 assign always module map(模块调用) 基本运算符 算术运算符(+ - * /) 逻辑运算符( ||) 位运算符(~| ^) 移位运算符( ) 条件运算符( ? :

文档评论(0)

wendang_12 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档