veriloghdl语言初步(编辑修改稿)内容摘要:

计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 58 格式: reg [n1:0] 存储器名 [m1:0]; 或 reg [n1:0] 存储器名 [m:1]; reg [n1:0] :定义了存储器中每一个存储单元的大小。 [m1:0]:定义了该存储器中有多少个这样的单元。 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 59 例 1. 定义一个存储器, 1024个字节,每个字节 8位。 reg [7:0] mymem[1023:0]。 例 2. 存储器与寄存器的区别 reg [n1:0] rega; //一个 n位的寄存器 reg mema[n1:0]; //n个一位寄存器组成的存 储器组 reg [3:0] Amem[63:0]; 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 60 说明: 1)数组的维数不能大于 2。 2)存储器属于寄存器数组类型。 连线数据类 型没有相应的存储器类型。 3)单个寄存器说明既能够用于说明寄存器类 型,也可以用于说明存储器类型。 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 61 例: parameter ADDR_SIZE = 16 , WORD_SIZE = 8。 reg [WORD_SIZE:1] RamPar [ ADDR_SIZE 1 : 0], DataReg; RamPar——存储器,是 16个 8位寄存器数组; DataReg——8位寄存器。 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 62 4)在赋值语句中需要注意如下区别: 存储器 赋值不能在一条赋值语句中完成,但是寄 存器可以。 因此在存储器被赋值时,需要定 义一个索引。 下例说明它们之间的不同。 reg [5:1] Dig。 // Dig为 5位寄存器。 . . . Dig = 539。 b11011。 // 赋值正确 reg BOg[5:1]。 // Bog为 5个 1位寄存器组成的的存储器组 . . . Bog = 539。 b11011。 // 赋值不正确 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 63 有一种存储器赋值的方法是分别对存储器中的每个字赋值。 例如: reg [3:0] Xrom [4:1]; Xrom[1] = 439。 hA; Xrom[2] = 439。 h8; Xrom[3] = 439。 hF; Xrom[4] = 439。 h2; 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 64 四 . 运算符 Verilog语言参考了 C语言中大多数运算 符的语义和句法。 但 Verilog中没有增 1(i++) 和减 1 (i– –)运算符。 1. 算术运算符  +(一元加和二元加)  -(一元减和二元减)  *(乘)  /(除)  %(取模) 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 65 说明 : 1)两个整数相除,结果值要略去小数部分,只取整数部分; 2)取模运算时,结果的符号位采用模运算式里第一个操作数的符号位; 模运算表达式 结果 说明 10 % 4 2 余数为 2 12 % 3 0 整数 11 % 5 1 余数为 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 66 3)在进行算术运算操作时,如果某个操作数 有不确定的值 X或 Z,那么整个结果为 X。 例: 39。 b10x1 + 39。 b01111 结果为不确定数 39。 bxxxxx 4)无符号数和有符号数  若操作数为寄存器型或连线型,或基数格式表示形式的整数则为无符号数;  若为整型或实型,则可以是有符号数。 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 67 例: reg [5:0] Bar; integer Tab。 . . . Bar = 639。 d12; //寄存器变量 Bar的十进制数为 52,向量值为 110100。 Tab = 639。 d12; //整数 Tab的十进制数为 12,位 形式为 110100。 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 68 5)算术操作结果的长度 算术表达式结果的长度由最长的操作数决 定。 在赋值语句下,算术操作结果的长度由操 作符左端目标长度决定。 reg [3:0] Arc, Bar, Crt; reg [5:0] Frx; . . . Arc = Bar + Crt; Frx = Bar + Crt; 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 69 例:算术运算符应用的一个例子。 module arithmetic (a, b, out1, out2, out3, out4, out5) input [2:0] a , b; output [3:0] out1 ; output [4:0] out3 ; output [2:0] out2 , out4, out5 ; reg [3:0] out1 ; reg [4:0] out3 ; reg [2:0] out2 , out4, out5 ; 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 70 always @ (a or b) begin out1=a+b ; out2=ab ; out3=a*b ; out4=a/b ; out5=a%b ; end endmodule 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 71 2. 逻辑运算符 逻辑运算符有 3种 :  amp。 amp。 (逻辑与 )  || (逻辑或 ) 。 (逻辑非 ) 说明: 1) amp。 amp。 和 || 为二目运算符,要求有两个操作数。 例 ( ab) amp。 amp。 ( bc) , a amp。 amp。 b ( ab) ||( bc) , a || b 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 72 2)。 是单目运算符,只要求一个操作数。 例: !( ab) , ! a 3)在一个逻辑表达式中,如果包含多个逻辑 运算符, 如:。 aamp。 amp。 b||(xy)amp。 amp。 c 按以下优先次序: 。  amp。 amp。 ||  逻辑运算符中,“ amp。 amp。 ‖和“ ||‖的优先级别低于关系运算符,“。 ”高于算术运算符。 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 73 3. 位运算  ~ 按位取反;  | 按位或;  amp。 按位与;  ^ 按位异或; 在 Verilog语言中有 7种位逻辑运算符: ^~或 ~^ 按位异或非; ~amp。 按位与非; ~| 按位或非; 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 74 例:若 A=539。 b11001; B=539。 b10101,则: ~A=539。 b00110 Aamp。 B= 539。 b10001 A|B= 539。 b11101 A^B= 539。 b01100 说明: 1)按位运算符中,除了“ ~‖为单目运算符外,其 余均为双目运算符。 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 75 2)对于双目运算符,如果操作数长度不相等 , 长度较小的操作数在最左侧添 0补位。 3)无论单目按位运算符还是双目按位运算符, 经过按位运算后,原来的操作数有几位,所得 结果仍为几位。 4)不要将逻辑运算符和按位运算符相混淆。 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 76 4. 关系运算符 Verilog关系运算符有: (大于) (小于) =(大于等于) =(小于等于) 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 77 例:关系运算符应用的一个例子。 module relation (a, b, out1, out2, out3, out4) input [2:0] a , b; output out1 , out2, out3, out4 ; reg out1, out2, out3, out4 ; always @ (a or b) begin out1=ab ; out2=a=b ; out3=ab ; if (a=b) out4=1 else out4=0 end endmodule 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 78 说明: 1)在进行关系运算时,若声明的关系为“假”, 则返回值是“ 0‖;若声明的关系为“真”,则返 回值是“ 1‖; 2)若某个操作数的值不定,则关系是模糊的, 返回值是不定值。 3)所有关系运算符有着相同的优先级别。 关 系运算符的优先级别低于算术运算符。 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 79 5. 等式运算符 等式运算符有 4种  = =(等于)  !=(不等于)  = = =(全等)  != =(非全等) 两目运算符 ,要求有两个操作数,得到的结果是 1位的逻辑值。 • 声明的关系为真,结果为 1; • 声明的关系为假,结果为 0; 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 80 ―==‖与“ ===‖的区别: == 0 1 x z 0 1 0 x x 1 0 1 x x x x x x x z x x x x === 0 1 x z 0 1 0 0 0 1 0 1 0 0 x 0 0 1 0 z 0 0 0 1 相等运算符真值表 全等运算符真值表 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 81 6. 缩位运算符(归约运算符) 单目运算符,也有与、或、非运算。 包括下面几种:  amp。 ——与  ~amp。 ——与非  | ——或  ~| ——或非  ^——异或  ^~, ~^——同或 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 82 其与、或、非运算规则类似于位运算符的运算规则,但其运算过程不同。 对操作数的相应位进行与、或、非运算,操作数是几位数,则运算结果是几位。 位运算: 缩位运算: 对单个操作数进行与、或、非递推运算,最后的运算结果是 1位的二进制数。 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P. 83 具体运算过程: 第一步:先将操作数的第 1位与第 2位进行与、 或、非运算; 第二步:将运算结果与第 3位进行与、或、非 运算,依次类推,直至最后一位。 例: reg[3:0] a; b=amp。 a; 若: A=539。 b11001 则: amp。 A=0; |A=1; 计算机系统综合课程设计 2020年教育部 英特尔精品课程 P.。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。