Verilog是硬件描述电路,我对此一直稀里糊涂,于是将锆石科技开发板附带的的一些基础数字电路Verilog程序整理记录下来,并且查看他们的RTL视图,总算有点理解了。
1.基本运算符
1 module Example_Operation 2 ( 3 input [3:0] a , 4 input [3:0] b , 5 input [3:0] c , 6 7 output [3:0] c1 , 8 output [3:0] c2 , 9 output [5:0] c3 , 10 output [3:0] c4 , 11 output [3:0] c5 , 12 output [3:0] d1 , 13 output [3:0] d2 , 14 output [3:0] d3 , 15 output [3:0] d4 , 16 output [3:0] e1 , 17 output [3:0] e2 , 18 output [3:0] e3 , 19 output [3:0] f1 , 20 output [3:0] f2 , 21 output [3:0] d11 , 22 output [3:0] c11 , 23 output [3:0] c22 , 24 output [3:0] c33 , 25 output [3:0] c44 , 26 output [3:0] c55 , 27 output [3:0] c66 , 28 output [3:0] e11 , 29 output [3:0] e22 , 30 output [7:0] f11 , 31 output [7:0] f22 32 ); 33 34 //== waveform1 算数运算符 35 //====================================================================== 36 assign c1 = a + b; //加 37 assign c2 = a - b; //减 38 assign c3 = a * b; //乘 39 assign c4 = a / b; //除 40 assign c5 = a % b; //求余 41 42 //== waveform2 关系运算符 43 //====================================================================== 44 assign d1 = a > b; //大于 45 assign d2 = a < b; //小于 46 assign d3 = a >= b; //大于等于 47 assign d4 = a <= b; //小于等于 48 49 //== waveform3 逻辑运算符 50 //====================================================================== 51 assign e1 = !a; //非 52 assign e2 = a && b; //与 53 assign e3 = a || b; //或 54 55 //== waveform4 逻辑等式运算符 56 //====================================================================== 57 assign f1 = a == b; //判断相等 58 assign f2 = a != b; //判断不等 59 60 //== waveform5 三目条件运算符 61 //====================================================================== 62 assign d11 = a ? b : c; //a为真,则d11 = b 63 //a为假,则d11 = c 64 65 //== waveform6 位运算符 66 //====================================================================== 67 assign c11 = ~a; //取反 68 assign c22 = a & b; //按位与 69 assign c33 = a | b; //按位或 70 assign c44 = a ^ b; //按位异或 71 assign c55 = a ~^ b; //按位同或 72 assign c66 = a ^~ b; //按位同或 73 74 //== waveform7 移位运算符 75 //====================================================================== 76 assign e11 = a << b; //左移 77 assign e22 = a >> b; //右移 78 79 //== waveform8 位拼接运算符 80 //====================================================================== 81 assign f11 = {a , b}; //拼接a和b,a和b位宽均为4,f11位宽为8 82 assign f22 = {2'd2{b}}; //拼接b低2位 83 84 endmodule