小编Mor*_*mer的帖子

命名空间与常规包

命名空间Python包(no __init__.py)和常规Python包(有__init__.py)之间的区别是什么,特别是当__init__.py常规包为空时?

我很好奇,因为最近我忘了制作__init__.py我制作的包装,我从来没有注意到任何问题.实际上,它们似乎与常规包装相同.

编辑:仅支持Python 3.3的命名空间包(参见PEP 420),所以很自然地,这个问题仅适用于Python 3.

python package python-3.x

15
推荐指数
2
解决办法
5277
查看次数

将长std_logic_vector与零进行比较

在模拟中,这是完美的.这是检查可合成代码的零的最佳方法.会产生什么资源?

signal vector_slv : std_logic_vector(2048 downto 0);
...
if (vector_slv = (vector_slv'range => '0')) then
  -- do something...
Run Code Online (Sandbox Code Playgroud)

考虑到h/w映射(具有最佳资源利用率),是否有任何其他最佳方式来实现此解决方案.

我会更了解所使用的资源.

vhdl

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

在其他泛型中使用 VHDL 泛型值

我希望能够将多个通道指定为泛型,并使用它来指定包含更多参数的数组的范围。编译时,我的 Aldec 编译告诉我在接口列表完成之前不能引用 'num_chan'。

有谁知道实现这一目标的方法?

ENTITY deframer IS
    generic (
      num_chan : integer                      := 2;            
      ch_low   : int_arr(num_chan-1 downto 0) := (  1, 189);   
      ch_hi    : int_arr(num_chan-1 downto 0) := (127, 189));
Run Code Online (Sandbox Code Playgroud)

vhdl

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

为什么我不能在一个常量声明中调用一个函数,它在ModelSim的同一个包中定义?

我有一个VHDL包,它定义了一个函数(前向声明)和一个常量.常量的值由该函数计算,该函数的主体位于包体中.

截至目前,ModelSim/QuestaSim是唯一不喜欢此代码的工具.它需要2个包,因此在常量声明之前解析了主体.

package test is
  function mytest(param : boolean ) return boolean;

  constant value : boolean := mytest(TRUE);
end package;

package body test is
  function mytest(param : boolean ) return boolean is
  begin
    return not param;
  end function;
end package body;
Run Code Online (Sandbox Code Playgroud)

这在VHDL和其他工具中是不允许使用宽松的解析规则,还是ModelSim问题?

vhdl modelsim

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

如何使不同的变量引用相同的值,同时仍允许直接操作?

什么是使不同变量引用相同值的好方法,同时仍允许直接操作,例如*在值上?

所需代码的示例能够执行以下操作:

a = <Reference to integer 2>
b = a
print(a * b)  # Should show 4
<a update (not with assign using =) with reference to integer 3>
print(a * b)  # Should show 9
Run Code Online (Sandbox Code Playgroud)

一个不太理想的解决方案是使用容器作为值,如命名空间,列表,字典等,但这需要引用.value如下所示的属性,因此不太需要:

import types

a = types.SimpleNamespace(value = 2)
b = a
print(a.value * b.value)  # Should show 4
a.value = 3
print(a.value * b.value)  # Should show 9
Run Code Online (Sandbox Code Playgroud)

封装值的好方法是什么,所以直接操作仍然可行?

python python-3.x

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

移位和二进制位运算符适用于布尔参数

用于移位操作二进制按位操作的 Python文档说参数必须是整数,但是下面的表达式在没有错误的情况下进行求值,但是为<<和得到奇数结果>>.

&在使用布尔参数时,是否还有其他地方可以查找文档等,还是对评估和结果有一些很好的解释?

  • 对与错:错(类'bool')
  • 真的 错:真(类'布尔')
  • True ^ False:True(类'bool')
  • ~True:-2(类'int')
  • ~False:-1(类'int')
  • True << True:2(class'int')
  • False >> False:0(类'int')

码:

# Python ver. 3.3.2

def tryout(s):
    print(s + ':', eval(s), type(eval(s)))

tryout('True & False')
tryout('True | False')
tryout('True ^ False')
tryout('~ True')
tryout('~ False')
tryout('True << True')
tryout('False >> False')
Run Code Online (Sandbox Code Playgroud)

python python-3.3

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

Pythonic方式的递归发生器?

下面是一个生成器,可以创建由多个字符串中的一个字符组成的所有组合:

('ab', 'cd', 'ef') => 'ace', 'acf', 'ade', 'adf', 'bce', 'bcf', 'bde', 'bdf'.
Run Code Online (Sandbox Code Playgroud)

但是,我想知道这是否可以在更多的Pythonic中完成.

# Example input data
t = ('ab', 'cd', 'ef')

# Recursive generator
def comb(t):
    if t:
        for c in t[0]:
            for s in comb(t[1:]):
                yield c + s 
    else:
        yield ''

# Test of generator
for r in comb(t):
    print(r)
Run Code Online (Sandbox Code Playgroud)

python functional-programming

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

从组合块输出驱动模块

  1. 使用组合逻辑在VHDL/Verilog中驱动模块的输出是一种很好的设计实践吗?

  2. 是否可以直接在组合块中使用模块输入,并使用该组合块的输出来驱动同一模块中的另一个顺序块?

verilog vhdl system-verilog

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

合成translate_off如何工作?

我有一个具有以下结构的代码

-- synthesis translate_off
... some sort of memory implementation/coding
-- synthesis translate_on
Run Code Online (Sandbox Code Playgroud)

如果删除这段代码会影响我FPGA implementation代码的最终输出,请告诉我.

谢谢,最好的问候,法拉斯

implementation synthesis fpga vhdl

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

如何使用VHDL实现时钟倍频器

我是VHDL编码的初学者.我正在尝试使用VHDL实现倍频器.我已经实现了分频器,但倍频并不那么容易.请提出实施该建议的想法.

fpga vhdl

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

VHDL中两个不同位数的乘法

我有两个数字A和B,两个都有不同的大小,我需要使用VHDL将它们相乘.我不知道乘以它们的确切逻辑.

vhdl

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