zoukankan      html  css  js  c++  java
  • Vector bit-select and part-select addressing verilog片选写法

    大端 m

    m[ a +: b ] == m[ (a+b-1) : a ]

    m[ a -: b ] == m[ a : (a-b+1) ]

    小端 n

    n[ a +: b ] == n[ a : (a+b-1) ]

    n[ a -: b ] == n[  (a-b+1) : a ]

    module top;
    `timescale 10ns/1ns
    
    reg [31:0] big_vect = 'h12345678;
    reg [0:31] little_vect = 'h87654321;
    reg [63:0] dword;
    
    integer sel;
    initial 
    begin
     #100
     
     $display("1. big_vect = 0x%h, big_vect[0 +:8] is %h, and big_vect[7 -:8] is %h ", big_vect, big_vect[0 +:8], big_vect[7 -:8] );
     
    if (   big_vect[0  +:8] ==    big_vect[7  : 0])begin  $display("   big_vect[0  +:8] ==    big_vect[7  : 0]"); end 
    if (little_vect[0  +:8] == little_vect[0  : 7])begin  $display("little_vect[0  +:8] == little_vect[0  : 7]"); end
    if (   big_vect[15 -:8] ==    big_vect[15 : 8])begin  $display("   big_vect[15 -:8] ==    big_vect[15 : 8]"); end
    if (little_vect[15 -:8] == little_vect[8  :15])begin  $display("little_vect[15 -:8] == little_vect[8  :15]"); end
    if (sel >0 && sel < 8) dword[8*sel +:8] = big_vect[7:0]; // Replace the byte selected.
    
    // 注意: big_vect[0:7] 引用错误,同理little_vect[15:8] 也是引用错误。
    // if (   big_vect[0  +:8] ==    big_vect[0  : 7])begin  end  
    
    end
    
    endmodule


    输出
    # 1. big_vect = 0x12345678, big_vect[0 +:8] is 78, and big_vect[7 -:8] is 78 # big_vect[0 +:8] == big_vect[7 : 0] # little_vect[0 +:8] == little_vect[0 : 7] # big_vect[15 -:8] == big_vect[15 : 8] # little_vect[15 -:8] == little_vect[8 :15]
  • 相关阅读:
    Linux
    前端
    第一章 初识 MyBatis
    mysql 复习
    五 、 Kafka producer 拦截器(interceptor) 和 六 、Kafka Streaming案例
    spark graphx图计算
    四、Kafka API 实战
    三、Kafka工作流程分析
    二、Kafka集群部署
    一、KafKa概述
  • 原文地址:https://www.cnblogs.com/jiang-ic/p/9000960.html
Copyright © 2011-2022 走看看