小编Mat*_*lor的帖子

我是否需要在连续的always 块中使用else 语句?

现在我正在努力实现时钟门控,如下所示。但我不明白为什么以及如何处理 De 信号?

module ClockGating( 


           input wire rst_n,
           input wire clk,
           input wire De,  
           input wire InReg,

           output reg OutReg

   );

   always @( posedge clk or negedge rst_n )
     begin
     if ( !rst_n ) begin   
            OutReg <= 0;
     end
     else begin
        if ( De ) begin
               OutReg  <= InReg;
            end
        else
               OutReg  <= OutReg;
     end
   end

endmodule
Run Code Online (Sandbox Code Playgroud)

但我想知道如果我使用不带 else 语句会发生什么?我可以在没有 else 语句的情况下使用吗?

module ClockGating( 


           input wire rst_n,
           input wire clk,
           input wire De,  
           input wire InReg,

           output reg OutReg

   ); …
Run Code Online (Sandbox Code Playgroud)

verilog

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

使用 std_logic_vector (VHDL) 访问数组元素

请看下面的代码:

....
port(
the_input: in std_logic_vector(0 to 3));
...
type dummy_array is array (0 to 2) of std_logic_vector (0 to 7);
signal ins_dummy: dummy_array := ( 8x"1",  8x"2", 8x"3");
...
Run Code Online (Sandbox Code Playgroud)

现在我想使用 bits 访问该数组的元素the_input(0 to 1)。我怎样才能做到这一点?据我所知,数组接受整数作为参数,但此输入是 std_logic。我尝试了不同论坛上提供的许多解决方案,但似乎没有任何效果。例如,当我应用此:时to_integer(unsigned(the_input(0 to 1))),结果为零。

怎么了?我不知道。有什么建议么?

vhdl

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

Verilog 中可以递归实例化吗?

有些问题会导致递归解决方案。Verilog 中可以递归实例化吗?模块是否可以实例化自身?

recursion verilog system-verilog

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

SystemVerilog界面中modport的优点和动机是什么?

我是SystemVerilog的新手.

我正在阅读以下教程:

https://www.doulos.com/knowhow/sysverilog/tutorial/interfaces/

我不确定在SystemVerilog界面中modport的优点和动机是什么?

system-verilog

4
推荐指数
1
解决办法
849
查看次数

系统Verilog - 带或的情况

我怎么能用或创建案例?

就像是:

string str;

case (str)
   "abc" || "dfg": begin
       //some code
   end
   "yfg": begin
       //some code
   end
   default: //some code
endcase
Run Code Online (Sandbox Code Playgroud)

verilog case system-verilog

3
推荐指数
1
解决办法
5330
查看次数

动态数组构造函数是否调用delete?

如果我这样做:

int da [];
...
da = new[2];
...
da = new[1];
Run Code Online (Sandbox Code Playgroud)

我有内存泄漏吗?我应该这样做:

da.delete;
da = new[1];
Run Code Online (Sandbox Code Playgroud)

代替?

system-verilog

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

VHDL 整数定义 VHDL-2019 的范围是多少?

使用 VHDL-2019 IEEE 规范部分时。5.2.3.1. 一般的

“但是,实现应允许声明范围完全包含在范围内的任何整数类型 -(2**63) 和 (2**63)-1 包括在内。”

(我添加了指数**)

这是否意味着 –(2**63) = -9223372036854775808 ?

在 1993 年的规范中,它指出 -((2**31) - 1) 和 (2**31) - 1) -2147483647 & 2147483647

新的 VHDL 规范在该定义中是否有错误?

vhdl

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

VHDL 案例选择不是局部静态的

此代码适用于一些工具

  • Aldec Riviera Pro

但不是其他人

  • GHDL(错误选择必须是本地静态表达式)
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.numeric_std.ALL;

ENTITY INSTRUCTION_PROCESSOR IS

    PORT (
        clk : IN std_logic;
        instruction : IN INTEGER
    );
END ENTITY INSTRUCTION_PROCESSOR;
ARCHITECTURE behavioural OF INSTRUCTION_PROCESSOR IS

    TYPE INSTRUCTION_t IS RECORD
        instr : INTEGER;
        cycles : INTEGER;
    END RECORD;

    CONSTANT CMD_A : INSTRUCTION_t := (instr => 0, cycles => 5);
    CONSTANT CMD_B : INSTRUCTION_t := (instr => 1, cycles => 3);

BEGIN
    PROCESSOR : PROCESS (clk)
        VARIABLE loop_cycles : INTEGER := 0;
    BEGIN …
Run Code Online (Sandbox Code Playgroud)

vhdl ghdl

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

Systemverilog: $realtime 显示不同的时间刻度精度

我试图为以下时间刻度设置打印 $realtime:

`timescale 1ns/10ps 
initial begin        
    #10;
    $display(" %0t",$realtime);
    $display($realtime);
end
Run Code Online (Sandbox Code Playgroud)

得到打印的结果是:

1000
10
Run Code Online (Sandbox Code Playgroud)

我只是好奇在实时打印中使用格式说明符有什么不同?如果我错了,请纠正我。我相信由于时间精度,它正在打印 1000 (10 *10ps = 1000 ns)。但差异的原因是什么?

verilog system-verilog

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

如何在系统verilog中返回关联数组

你好想知道关联数组如何作为返回值传递

代码:

function abc()
begin
int value[string][string];
value = def();
end

function int def()
begin
int new_value[string][string];
//logic to populate the array
return new_value;
end
Run Code Online (Sandbox Code Playgroud)

我看到以下错误:目标的类型是 int。而source的类型是int$[string][string]。

如何处理这个问题并无缝地传递关联数组?

verification verilog system-verilog

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

Verilog“输入、输出或输入输出未出现在端口列表中”

我不明白这个错误是什么意思。我想制作一个带有内存的简单计算器,但是这个错误跳出来了,我无法得到什么

** 错误:C:\Users\Kainy\Desktop\LOGIC\calculator\cal.v(14):输入、输出或输入输出未出现在端口列表:f1 中。** 错误:C:\Users\Kainy\Desktop\LOGIC\calculator\cal.v(15):输入、输出或输入输出未出现在端口列表中:f2。

方法。好像我的f1,f2有一些无效的东西,我该如何修复它?

module cal( a,b,c,op,clk,reset,en,r_w);     
input [3:0] a;
input [3:0] b; 
input [7:0] c; 
input [2:0] op; 
input clk;
input reset;
input en;
input r_w;



output reg [7:0] f1;
output reg [7:0] f2; 


wire [7:0] f3;




always@(a or b or op) begin
case(op)
3'b000: begin
 f1 = a;
 f3 = f1;
end

3'b001: begin
 f1 = b;
 f3 = f1;
end


3'b010: begin 
 f1 = a+b;
 f3 = f1;
end

3'b011: begin
 f1 = a - …
Run Code Online (Sandbox Code Playgroud)

port verilog out inout

0
推荐指数
1
解决办法
9579
查看次数

Verilog中1和1'b1之间的差异

在verilog代码中仅给出1和给出1'b1有什么区别?

embedded verilog system-verilog iverilog

-1
推荐指数
1
解决办法
44
查看次数

标签 统计

system-verilog ×7

verilog ×7

vhdl ×3

case ×1

embedded ×1

ghdl ×1

inout ×1

iverilog ×1

out ×1

port ×1

recursion ×1

verification ×1