当前位置:文档之家› 第2章__FPGA设计基础

第2章__FPGA设计基础


3. 格式 Verilog HDL是区分大小写的,即大小写不 是区分大小写的, 是区分大小写的 同的标识符是不同的。另外其书写格式自由, 同的标识符是不同的。另外其书写格式自由, 即一条语句可多行书写,一行可写多个语句。 即一条语句可多行书写,一行可写多个语句。 空白(新行、制表符、空格)没有特殊意义。 空白(新行、制表符、空格)没有特殊意义。 例 input A;input B;与 ; ; input A; ; input B; ; 是一样的。 是一样的。
(2)寄存器类型 寄存器类型 reg是最常用的寄存器类型,寄存器类型通 是最常用的寄存器类型, 是最常用的寄存器类型 常用于对存储单元进行描述, 常用于对存储单元进行描述,如D触发器 触发器 、ROM等。 等
寄存器类型的存储单元建模举例 用寄存器类型来构建两位D触发器如下 触发器如下: 用寄存器类型来构建两位D触发器如下: reg [1:0] Dout; : ; …… always@(posedge Clk) Dout <= Din; ……
Verilog与C语言的比较 与 语言的比较
是一种硬件语言, (1)Verilog是一种硬件语言,最终是为了产生实际的硬件 ) 是一种硬件语言 电路或对硬件电路进行仿真; 语言是一种软件语言, 电路或对硬件电路进行仿真;而C语言是一种软件语言,是 语言是一种软件语言 控制硬件来实现某些功能的语言。 控制硬件来实现某些功能的语言。 语言只要是语法正确, (2)C语言只要是语法正确,都可以编译执行;而Verilog ) 语言只要是语法正确 都可以编译执行; 语言有可综合的限制,即在所有的Verilog语句中,只有一部 语句中, 语言有可综合的限制,即在所有的 语句中 分可以被综合,而另外的部分则不能被综合,只能用来仿真。 分可以被综合,而另外的部分则不能被综合,只能用来仿真。 语言是一种软件编程语言, (3)C语言是一种软件编程语言,其基本思想是语句的循序 ) 语言是一种软件编程语言 执行; 语言的基本思想是模块的并行执行。 执行;而Verilog语言的基本思想是模块的并行执行。 语言的基本思想是模块的并行执行 编程时, 是硬件语言, (4)利用 )利用Verilog编程时,要时刻记得 编程时 要时刻记得Verilog是硬件语言, 是硬件语言 要时刻将Verilog与硬件电路对应起来。 与硬件电路对应起来。 要时刻将 与硬件电路对应起来
5.数据类型 数据类型 Verilog HDL主要包括两种数据类型: 主要包括两种数据类型: 主要包括两种数据类型 线网类型(net type) 线网类型 寄存器类型( 寄存器类型(reg type) ) (1)线网类型 线网类型
线网类型主要有wire和tri两种。线网类型用于对结构 和 两种 两种。 线网类型主要有 化器件之间的物理连线进行建模,如器件的管脚、 化器件之间的物理连线进行建模,如器件的管脚、内部器 件如与门的输出等。 件如与门的输出等。 线网类型代表的是物理连接线,因此它不存贮逻辑值, 线网类型代表的是物理连接线,因此它不存贮逻辑值, 必须由器件所驱动,通常由assign进行赋值,如assign 进行赋值, 必须由器件所驱动,通常由 进行赋值 A=B^C。 。
第2章
重点
FPGA设计基础 设计基础
Verilog HDL基础知识 HDL基础知识 嵌入式处理器介绍 FPGA设计流程 设计流程
2.1 Verilog HDL基础知识 基础知识
概述 HDL(Hardware Description Language)是 ( ) 一种用形式化方法来描述数字电路和数字逻辑系统 的硬件描述语言。 的硬件描述语言。 有两种类型:VHDL 和 Verilog HDL。 有两种类型: 。 Verilog HDL语言具有这样的描述能力:设计的行 语言具有这样的描述能力: 语言具有这样的描述能力 为特性、设计的数据流特性、设计的结构组成, 为特性、设计的数据流特性、设计的结构组成, 以及包含响应监控与设计验证方面的时延和波形 产生机制。 产生机制。
6.运算符和表达式 运算符和表达式 常用的算术运算符主要有 加法(二元运算符):“+” 加法(二元运算符):“ ): 减法(二元运算符): 减法(二元运算符): “-” 乘法(二元运算符): ” ):“ 乘法(二元运算符):“*” (1)算术操作结果的位数长度 算术操作结果的位数长度 算术表达式结果的长度由最长的操作数决定。 算术表达式结果的长度由最长的操作数决定。在 赋值语句中, 赋值语句中,算术操作结果的长度由操作符左端 目标长度决定。 目标长度决定。
字符串是双引号内的字符序列 字符串不能分成多行书写 "INTERNAL ERROR" " REACHED- >HERE " 用8位ASCII值表示的字符可看做是无符号整 位 值表示的字符可看做是无符号整 因此字符串是8位 值的序列。 数,因此字符串是 位ASCII值的序列。为存储字 值的序列 符串“ 符串“INTERNAL ERROR ”,变量需要 ,变量需要8*14位: 位 reg[1:8*14] Message; ; …… Message = "INTERNAL ER法器的形成语言为
module addr (a, b, cin, count, sum); / /模块名及 模块名及 输入输出端口列表 input [2:0] a; / /定义信号流向及位宽 定义信号流向及位宽 input [2:0] b; input cin; output count; output [2:0] sum; assign {count,sum} = a +b + cin; / /功能描述 功能描述 endmodule
整型数可以按如下两种方式书写: 整型数可以按如下两种方式书写: 十进制形式整数的例子: 十进制形式整数的例子: 32 十进制数 十进制数32 -15 十进制数-15 十进制数
基数表示形式整数的例子: 基数表示形式整数的例子: 5'O37 5位八进制数(二进制 位八进制数( 位八进制数 二进制11111) ) 4'D2 4位十进制数(二进制 位十进制数( 位十进制数 二进制0011) ) 4'B1x_01 4位二进制数 位二进制数 7'Hx 7位x(扩展的 ,即xxxxxxx 扩展的x), 位 扩展的 4'hZ 4位z(扩展的 ,即zzzz 扩展的z), 位 扩展的 4'd-4 非法: 非法:数值不能为负 8‘h 2A 在位长和字符之间,以及基数和数值 在位长和字符之间, 之间允许出现空格 3' b001 非法: 和基数 和基数b之间不允许出现空格 非法:`和基数 之间不允许出现空格 (2+3)'b10 非法:位长不能够为表达式 非法:
实型数可以用下列两种形式定义: 实型数可以用下列两种形式定义: ①十进制计数法 2.0 5.678 11572.12 0.1 2. //非法:小数点两侧必须有 位数字 非法: 非法 小数点两侧必须有1位数字 ②科学计数法 23_5.1e2 其值为23510.0; 忽略下划线 其值为 ; 3.6E2 其值为360.0 (e与E相同 相同) 其值为 与 相同 5E-4 其值为0.0005 - 其值为
自顶向下的设计方法
通过自顶向下的设计方法,可以实现设计的结构化, 通过自顶向下的设计方法,可以实现设计的结构化,可以 使一个复杂的系统设计由多个设计者分工合作, 使一个复杂的系统设计由多个设计者分工合作,还可以实 现层次化的管理。 现层次化的管理。
模块
模块(module)是Verilog的基本描述单位,用于描述某 模块( ) 的基本描述单位, 的基本描述单位 个设计的功能或结构以及与其他模块通信的外部端口。 个设计的功能或结构以及与其他模块通信的外部端口。
4. 数字值集合 (1) 值集合 Verilog HDL中规定了四种基本的值类型,这四 中规定了四种基本的值类型, 中规定了四种基本的值类型 类基本值组成了Verilog HDL中的常量,即 中的常量, 类基本值组成了 中的常量 0:逻辑 或“假”; :逻辑0或 1:逻辑1或“真”; :逻辑 或 X:未知值; :未知值; Z:高阻。 :高阻。
注意,这四种值的解释都内置于语言中。如一个为 的值 注意,这四种值的解释都内置于语言中。如一个为z的值 总是意味着高阻抗,一个为0 的值通常是指逻辑0; 总是意味着高阻抗,一个为 的值通常是指逻辑 ;在门 的输入或一个表达式中为“ 的值通常解释成 的值通常解释成“ 。 的输入或一个表达式中为“z”的值通常解释成“x ”。此 值和z值都是不分大小写的 外,x值和 值都是不分大小写的,也就是说,值0x1z与值 值和 值都是不分大小写的,也就是说, 与值 0X1Z相同。 相同。 相同
Verilog HDL基本语法 基本语法 1.标识符 1.标识符 Verilog HDL中的标识符可以是任意一组字母、数 中的标识符可以是任意一组字母、 中的标识符可以是任意一组字母 符号和_(下划线 符号的组合, 字、$符号和 下划线 符号的组合,但标识符的 符号和 下划线)符号的组合 第一个字符必须是字母或者下划线。另外, 第一个字符必须是字母或者下划线。另外,标识 符是区分大小写的。 符是区分大小写的。 例
(2)常量 常量
Verilog HDL中有三种常量:整型、实型和字符串 中有三种常量: 中有三种常量 整型、 下划线符号( 可以随意用在整数或实数中, 型。下划线符号( _ )可以随意用在整数或实数中, 它们就数量本身没有意义,可用来提高易读性,唯 它们就数量本身没有意义,可用来提高易读性, 一的限制是下划线符号不能用做首字符。 一的限制是下划线符号不能用做首字符。
Count COUNT R56_68 FIVE$
//与Count不同 与 不同
Verilog HDL定 定 义的一些常用的 关键词
always edge endspecify if module
and else endtable initial negedge
相关主题