小编e19*_*001的帖子

SystemVerilog数据类型的区别(reg,逻辑,位)

systemverilog中有不同的数据类型,可以像下面这样使用:

reg [31:0] data;
logic [31:0] data;
bit [31:0] data;
Run Code Online (Sandbox Code Playgroud)

他们三个如何不同?

system-verilog

19
推荐指数
2
解决办法
7万
查看次数

在Verilog中编写RAM的更好方法

编写RAM时哪个代码更好?

  1. 分配data_out内部always块:

    module memory(
        output reg [7:0] data_out,
        input [7:0] address,
        input [7:0] data_in, 
        input write_enable,
        input clk
    );
        reg [7:0] memory [0:255];
    
        always @(posedge clk) begin
            if (write_enable) begin
                memory[address] <= data_in;
            end
            data_out <= memory[address];
        end
    
    endmodule
    
    Run Code Online (Sandbox Code Playgroud)
  2. data_out使用assign声明分配:

    module memory(
        output [7:0] data_out,
        input [7:0] address,
        input [7:0] data_in, 
        input write_enable,
        input clk
    );
        reg [7:0] memory [0:255];
    
        always @(posedge clk) begin
            if (write_enable) begin
                memory[address] <= data_in;
            end
        end
    
        assign …
    Run Code Online (Sandbox Code Playgroud)

verilog vlsi

17
推荐指数
2
解决办法
3万
查看次数

什么是`+:`和` - :`?

我最近在verilog/systemverilog代码中看到了这个运算符.

logic [15:0] down_vect;
logic [0:15] up_vect;

down_vect[lsb_base_expr +: width_expr]
up_vect  [msb_base_expr +: width_expr]
down_vect[msb_base_expr -: width_expr]
up_vect  [lsb_base_expr -: width_expr]
Run Code Online (Sandbox Code Playgroud)

我很少见到这一点,我想问一下这是什么,何时以及如何使用它?

verilog system-verilog

15
推荐指数
1
解决办法
5538
查看次数

如何在Verilog中将长语句分成几行

例如,我有一个长语句:

    $display("input_data: %x, 
              output_data: %x,
              result: %x",
              input_data,
              output_data,
              result);
Run Code Online (Sandbox Code Playgroud)

如何在Verilog中将其转换为单个语句和多行?

verilog

9
推荐指数
2
解决办法
8263
查看次数

更好的编码D触发器的方法

最近,我在verilog中看到了一些D触发器RTL代码,如下所示:

    module d_ff(
            input d,
            input clk,
            input reset,
            input we,
            output q
    );

    always @(posedge clk) begin
            if (~reset) begin
                    q <= 1'b0;
            end
            else if (we) begin
                    q <= d;
            end
            else begin
                    q <= q;
            end
    end
    endmodule
Run Code Online (Sandbox Code Playgroud)

该声明是否q <= q;必要?

verilog

7
推荐指数
1
解决办法
2万
查看次数

是否可以使用#define更改#include文件名?

我正在使用一些旧的C++代码,这些代码显然是在标准化之前iostream.h进行的iostream,并且从其开始,以及其他类似的代码.因此,我的相对现代版本的g ++在尝试时失败#include <iostream.h>等.

我很好奇是否可以使用预处理器通过命令行将实例更改iostream.h为just iostream.我试过附加-Diostream.h=iostreamg ++,但这似乎并没有改变include语句.

我猜测预处理器不可能修改include语句?

c++ c-preprocessor

7
推荐指数
1
解决办法
134
查看次数

在Verilog中进行信号边缘检测的正确方法

我想检测一个来自触发器的信号的上升沿AA到BB

                    +----+
  A ----------------|    |----- OUT
        +----+      | BB |
  B ----|    |------|>   |
        | AA |      +----+
clk ----|>   |
        +----+
Run Code Online (Sandbox Code Playgroud)

Verilog代码:

    module edge_detect (
        input A,
        input B,
        input clk,
        output OUT
    );

        reg AA;
        reg BB;

        always @(posedge clk) begin
            AA <= B;
        end

        always @(posedge AA)begin
            BB <= A;
        end

        assign OUT = BB;
    endmodule
Run Code Online (Sandbox Code Playgroud)

输出AA用作BB表示AA已完成其工作的时钟,然后BB可以继续其操作.

我很少看到这段代码.这是一个好习惯吗?

如果没有,有没有其他正确的方法来检测信号的边缘?

synchronization verilog

6
推荐指数
1
解决办法
1万
查看次数

从systemverilog中的函数返回队列

我无法编译此代码:

      function integer[$] get_register_name;
                integer ret[$];
                ret.push_back(1);
                ret.push_back(2);
                return ret;
      endfunction
Run Code Online (Sandbox Code Playgroud)

是否可以从函数返回队列?

system-verilog

6
推荐指数
1
解决办法
1万
查看次数

AND按位运算的数学方程?

例如,在左移操作中,

5 << 1 = 10

10 << 1 = 20

然后可以建立一个数学方程,

n << 1 = n * 2.

如果存在左移操作的等式,

那么有可能还有一个

AND运算的数学方程?

或任何其他按位运算符?

c math bitwise-operators

5
推荐指数
1
解决办法
6282
查看次数

编译pango:对“hb_ft_face_create”的未定义引用

我一直在尝试编译pango-1.38.1

配置没问题,但是在 make 期间出现链接错误:

Making all in pango-view
make[2]: Entering directory `/home/build/pango-1.38.1/pango-view'
  CCLD     pango-view
../pango/.libs/libpangoft2-1.0.so: undefined reference to `hb_ft_face_create'
../pango/.libs/libpangoft2-1.0.so: undefined reference to `hb_ft_face_create_cached'
collect2: ld returned 1 exit status
make[2]: *** [pango-view] Error 1
Run Code Online (Sandbox Code Playgroud)

Harfbuzz 和包配置安装/位于

/usr/local/lib/pkgconfig/harfbuzz.pc
$ echo $PKG_CONFIG_PATH
/usr/local/lib/pkgconfig/
Run Code Online (Sandbox Code Playgroud)

我在哪里可以找到hb_ft_face_create?

makefile pango configure

5
推荐指数
0
解决办法
944
查看次数