当前位置:   article > 正文

verilog语法+:和-:_verilog +:

verilog +:

前言

本文转载自 :Verilog动态截取固定长度语法+:和-:

参考 : Verilog常用语法

1 拼接运算符


{信号1的某几位,信号2的某几位,...,...,信号n的某几位},中间用逗号隔开,最后用大括号括起来表示一个信号整体。
位拼接表达式中不允许出现没有指明位数的信号;
位拼接可以用重复法来简化表达式:{4{w}}等同于{w,w,w,w};
位拼接还可以用嵌套的方式来表达:{b,{3{a,b}}}等同于{b,a,b,a,b,a,b}。
 

2 case语法

  1. reg [2:0] out ; // 变量类型定义为reg,实际综合出来不是触发器。
  2. always @ (*) begin
  3. case(sel)
  4. 2'b00 : out = 2'd1; // If sel=0, output is a
  5. 2'b01 : out = 2'd3; // If sel=1, output is b
  6. 2'b10 : out = 2'd2; // If sel=2, output is c
  7. default : out = 2'd0; // If sel is anything else, out is always 0
  8. endcase
  9. end

2.1 信号定义

  1. //端口信号定义方式一:
  2. module fsm(
  3. rxflr,
  4. ssi_oe_n
  5. );
  6. // ------------------------------------------------------
  7. // -- Port Declaration
  8. // ------------------------------------------------------
  9. input [`RX_ABW :0] rxflr ;//这种wire类型的端口,不需要再下面重复定义。
  10. output ssi_oe_n ;//这种reg类型的端口,需要在下面定义。
  11. // ----------------------------------------------------------
  12. // -- local registers and wires
  13. // ----------------------------------------------------------
  14. reg ssi_oe_n;
  15. endmodule
  16. //端口信号定义方式二:这种方式是当前使用较多的方式
  17. module fsm(
  18. input wire [`RX_ABW :0] rxflr,//ASIC常用,定义wire和reg
  19. output reg ssi_oe_n
  20. );
  21. endmodule
  22. //端口信号定义方式三:
  23. module fsm(
  24. input [`RX_ABW :0] rxflr ,//FPGA中常用,wire不定义
  25. output ssi_oe_n //该信号也是wire类型
  26. );
  27. reg r_single;
  28. assign ssi_oe_n = r_single ;
  29. endmodule
  30. //模块端口parameter定义如下
  31. module ram_1r1w
  32. #(
  33. parameter width=128,
  34. parameter deepth=32
  35. )(
  36. input wclk,
  37. input [width-1:0] wdin,
  38. input rclk,
  39. output [width-1:0] dout
  40. );
  41. endmodule
  42. 例化如下:
  43. ram_1r1w #(
  44. .width ( 128 ),//这个端口要是没有的话,就是默认值
  45. .deepth ( 96 ) //这个端口要是没有的话,就是默认值
  46. )u_ram_1r1w_96x128(
  47. .wclk ( wclk ),
  48. .wdin ( wdata ),
  49. .rclk ( rclk ),
  50. .dout ( rdata )
  51. );
  52. //也可以这样例化
  53. ram_1r1w u_ram_1r1w_96x128(
  54. .wclk ( wclk ),
  55. .wdin ( wdata ),
  56. .rclk ( rclk ),
  57. .dout ( rdata )
  58. );

3 动态截取固定长度数据

参考如下:

  1. reg [9:0] data;
  2. reg [2:0] get_dout;
  3. get_dout = data[i+:3] //表示截取数据databit i开始、合计取3bit位宽的数据
  4. //i可以是cnt(计数器产生的变量)或者固定值

详细介绍如下所示:

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/784450
推荐阅读
相关标签
  

闽ICP备14008679号