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