第5讲基于HDL实现的2选1数据选择器设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3、 关系运算符
关系运算符号
> >= < <=
功能
大于 不大于(小于等于) 小于 不小于(大于等于)
4、位运算符
位运算符号 ~ & | ^ ^~、~^ 功能 按位取反 按位与 按位或 按位异或 按位同或
5、等式运算符
等式运算符号 功能
==
!= === !==
等于
不等于 全等 不全等
等式运算符==与全等运算符===的区别: 对于==,参与比较的两个操作数必须逐位相等,其相等比较 结果为1,如果某位为不定态和高阻值,其相等比较结果为不 定态;而全等比较===,则对于这些高阻和不定态也进行比 较,两个操作数完全一致其结果为1,否则为0; 如:A=8’b1100010x,B==8’b1100010x,则A==B的运算结果为 不定值x,而A===B的运算结果为1.
3、工程编译
Processing →Start Compilation 4、功能测试(波形仿真) 新建波形文件→添加输入输出端口→设 置输入信号波形→功能仿真→检验功能

课堂任务: 利用三种方法设计一个4选1的选择器
3、变量以及数据类型

Memory寄存器型 Verilog 可通过reg变量来建立数组,用来表示一组 存储器,称为memory寄存器。 定义格式:reg[n-1:0] 存储器名[m-1:0]; 如:reg[7:0] memory1[255:0];//定义了256个 8位的存储器,名字叫memory1。该存储器的地址 范围为0~255.

实数型数据


实数型数据可以用十进制方式表示,但不能省 略小数点后面的数字。 实数10.0,不能写成10 实数型数据可以用科学记数法表示 9.32e2表示十进制数932
字符串数据
在Verilog中字符串是一个双引号引出的字符序 列。 字符串数据不能分成多行书写 Parameter型(符号常量) Parameter 参数名1=表达式,参数名2=表达 式…参数名n=表达式;
2、逻辑运算符
逻辑运算符号 && || ! 功能 逻辑与 逻辑或 逻辑非
逻辑与“&&”和逻辑或“||”都是双目运算符,要求有两个操作数。 逻辑与的用法:操作数1 && 操作数2。当两个操作数都为真时, 运算的结果才为真。如果任何一个操作数为假,则运算的结果为假。 逻辑或的用法:操作数1 || 操作数2。当两个操作数中有一个为真 时,运算的结果就为真。只有当两个操作数都为假时,则运算的结 果才为假。 逻辑非“!”只有一个操作数,用法:!操作数。
1、算术运算符
算术运算符号
+ பைடு நூலகம் /
功能
加法 减法 乘法 除法
%
求余
1、算术运算符





加法运算符“+”可以是双目运算符,用法为:操作数1 + 操 作数2。如:a+b;也可以做为单目运算符,即正值运算符, 用法如:+1、+b。 减法运算符“-” 也与加法运算符一样,可以是双目运算符, 用法为:操作数1 - 操作数2。如:a-b;也可以做为单目运 算符,即负值运算符,用法如:-1、-b。 乘法运算符“*”、除法运算符“/”和求余运算符“%”都属 于双目运算符。用法为:操作数1*操作数2、操作数1/操作 数2、操作数1%操作数2。如:a*b、a/b、a%b。 使用除法运算符进行整数除法运算时,结果值要略去小数部 分只取整数部分。例如“5/2”的值为2,“10/3”的值为3。 求余运算符也称为模运算符,要求“%”的两侧均为整数


位拼接运算符“{}”,将两个或多个信号的某些位拼 接起来。 {信号1的某几位,信号2的某几位,…}
任务:用Verilog实现2选1数据选择器
1、新建工程 File→New Project →mux2_1_ex1 2、设计输入 a、File→ New →Design Files →Verilog HDL File →OK b、输入程序代码 c、 File→ Save As→ mux2_1_ex1.v
6、缩位运算符
缩位运算符号 & ~& | 功能 缩位与 缩位与非 缩位或
~|
^ ^~、~^
缩位或非
缩位异或 缩位同或
7、移位运算符
移位运算符 左移<< A<<2 右移>> A>>2 如:A=4’b1101, A<<2 A=4’b1101, A>>2

A=4’b0100 A=4’b0011
8、位拼接运算符
程序代码---数据流描述方式





/*2选1数据选择器,方法一:采用结构描述法*/ module mux2_1_ex1(P0,P1,S,F); input P0,P1,S; output F; wire not_s,andcntrl1,andcntrl2; not U1(not_s,s); and U2(andcntrl1,P0,not_s), U3(andcntrl2,P1,s); or U4(F,andcntrl1,andcntrl2); endmodule




/*2选1数据选择器,方法三:采用行为描述方式*/ module mux2_1_ex1(P0,P1,S,F); input P0,P1,S; output F; reg F; always@(P0 or P1 or S) Begin if(S==1’b0) F<=P0; else F<=P1; end endmodule
2、 “?:”语句
条件操作符的语法格式如下: 条件表达式?表达式1:表达式2 如果条件表达式为1(即为真),则运算后结果取 表达式1的值,否则取表达式2的值。 如:assign F=(s==1’b0)?P0:P1;

三、运算符

(1)算术运算符 (+、-、×、/、%) (2)关系运算符 (<、>) (3)等式运算符 (== 、!=) (4)逻辑运算符 (&&、||、!) (5)位运算符 (~、&、|) (6)缩位运算符 (7)移位运算符 (>>、<<) (8)条件运算符 (?:) (9)位拼接运算符
第五讲:基于HDL实现的2选1数据选择器设计
主讲人:雷求胜
复习: Verilog HDL模块的一般结构
模块声明 module 模块名(port1,port2,port3…portn); 端口声明语句块 逻辑功能描述语句块 Endmodule
一、数据类型及常量变量
1、标识符



标识符用于表示电路系统中模块、寄存器、输 入/输出端口、连线等物理对象名字。 标识符可以是任意一组字母、数字以及符号 “$”和下画线“_”的组合,但必须是字母和下 画线开头。 标识符是区分大小写的
程序代码---数据流描述方式

/*2选1数据选择器,方法二:数据流描述方式*/
module mux2_1_ex2(P0,P1,S,F); input P0,P1,S; output F; assign F=~S&P0|S&P1; endmodule

程序代码---行为描述方式


3、变量以及数据类型

wire线网型
wire线网型是最常用的数据类型,它相当于组合逻辑电路中各 种连接线,其特点就是输出值紧随输入变化而变化,不能暂存。 Verilog模块中的输入/输出信号类型默认定义为wire型,模块 中引用实例元件输出信号以及用“assign”语句赋值的变量, 一般都定义为wire型。 定义一根单信号连线为wire型变量的格式: wire 信号名1,信号2,……; 定义n位总线为wire型变量的格式: wire [n-1:0]信号名1,信号2,……; 如:wire f;//定义一位数据f。 wire[7:0] date//定义一个8位数据总线date为wire型。
2、常量
整数型数据 +/-<位宽>’<进制符号><数字> 位宽:表示整数以二进制形式存在时的位数; 进制符号:B或b表示二进制;o或O表示八进制;d或D 表示十进制;h或H表示十六进制。 如:8’b01010101 4’hE 5’D25 6’o70

注意:
书写较长的数值使用下划线,可以提高可读性。 如:16’b1100_0110_0000_1010 x或z表示的宽度取决于所用进制。 如:8’h1x//等价于8’b0001xxxx 4’bz//等价于4’bzzzz 如果定义的位宽不实际的位数要长,通常在数的左边填“0” 补位,如果数的最左边一位位x,z,就相应用x或z在左边补位。 如果定义的位宽比实际的位数小,那么将最左边的为舍掉。
二、连续赋值语句及“?:”语句
1、连续赋值语句 assign wire型变量=表达式; 连续赋值语句assign与过程语句always中过程赋值语 句的区别. a、连续赋值语句用于wire型数据,而过程赋值语句用于 寄存器型变量的赋值。 b、连续赋值语句在过程块外使用,而过程赋值语句在过 程快内使用。
3、变量以及数据类型

reg寄存器型
reg类型定义的是一种能暂存数据的变量。 reg 信号名1,信号2,……;//定义一位reg型数据 reg [n-1:0]信号名1,信号2,……; //定义n位reg型数据 用reg数据类型定义的信号必须放在过程块 (如always,initial)中通过过程赋值语句赋值。
相关文档
最新文档