标签: vhdl

为什么我不能增加这个`std_logic_vector`

这里发生了什么?为什么我得到'运算符参数类型不匹配',我该怎么做才能修复它?

--
-- 32-bit counter with enable and async reset
--
architecture synthesis1 of counter_32bit is    
signal nextvalue : std_logic_vector ( 31 downto 0 );    
begin

  --
  -- combo
  --
  nextvalue <= value + 1; -- here

  --
  -- sequential
  --
  ff:process( clk, rst )
  begin

    if( rst = '1' ) then
      value <= 0; -- and here...
    elsif( clk'event and ( clk ='1' ) ) then
      if( ena = '1' ) then
         value <= nextvalue;
      end if;
    end if; …
Run Code Online (Sandbox Code Playgroud)

vhdl

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

更好的方法来实现模运算(算法问题)

我最近一直试图实现模块化指数器.我正在用VHDL编写代码,但我正在寻找更具算法性质的建议.模幂运算器的主要组件是模块化乘法器,我也必须自己实现.我对乘法算法没有任何问题 - 它只是添加和移位而且我已经很好地弄清楚了所有变量的含义,以便我可以在相当合理的时间内繁殖.

我遇到的问题是在乘法器中实现模数运算.我知道重复减法会有效,但也会很慢.我发现我可以改变模数以有效地减去模数的大倍数,但我认为可能还有更好的方法来做到这一点.我正在使用的算法是这样的(奇怪的伪代码如下):

result,modulus : integer (n bits) (previously defined)
shiftcount : integer (initialized to zero)
while( (modulus<result) and  (modulus(n-1) != 1) ){
     modulus = modulus << 1
     shiftcount++
}
for(i=shiftcount;i>=0;i--){
     if(modulus<result){result = result-modulus}
     if(i!=0){modulus = modulus >> 1}
}
Run Code Online (Sandbox Code Playgroud)

所以...这是一个很好的算法,或者至少是一个好的开始?维基百科并没有真正讨论用于实现模运算的算法,每当我尝试在其他地方搜索时,我发现它真的很有趣,但却非常复杂(通常是无关的)研究论文和出版物.如果有一种明显的方法可以实现这一点,我没有看到,我真的很感激一些反馈.

algorithm vhdl modulo

12
推荐指数
4
解决办法
3万
查看次数

如何在VHDL中声明具有多个零的输出

您好我正在尝试找到替换此命令的方法:Bus_S <= "0000000000000000000000000000000" & Ne;使用更方便的东西.逐个计数零并不是很复杂.该程序是针对ALU的SLT SLT单元.SLT仅获得1位(ADDSU32的MSB)并且具有全为零的32位输出,但第一位取决于ADDSU32的Ne = MSB.(暂时忽略ALUop)

entity SLT_32x is
   Port ( Ne : in  STD_LOGIC;
         ALUop : in STD_LOGIC_VECTOR (1 downto 0);
         Bus_S : out  STD_LOGIC_VECTOR (31 downto 0));
end SLT_32x;

architecture Behavioral of SLT_32x is
begin
  Bus_S <= "0000000000000000000000000000000" & Ne; 
end Behavioral;
Run Code Online (Sandbox Code Playgroud)

有没有办法使用(30 downto 0)='0'或类似的东西?谢谢.

vhdl

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

VHDL有三元运算符吗?

我喜欢三元运算符vs if子句的整洁.

该运算符是否存在于vhdl中?我的搜索恰恰相反.我还检查了when语句,但它不是运算符,我希望能够在进程中使用它...

ternary-operator vhdl

12
推荐指数
2
解决办法
8088
查看次数

VHDL中mod和rem运算符的区别?

我在VHDL编程中遇到了这些语句,无法理解两个运算符mod和rem之间的区别

    9 mod 5
    (-9) mod 5
    9 mod (-5)
    9 rem 5
    (-9) rem 5
    9 rem (-5)
Run Code Online (Sandbox Code Playgroud)

vhdl

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

有没有人有关于VHDL和Verilog使用的定量数据?

VHDL和Verilog的用途相同,但大多数工程师都喜欢这两种语言中的一种.我想找出谁喜欢哪种语言.

有关Verilog和VHDL之间分离的几十个神话和常见智慧.(ASIC/FPGA,欧洲/美国,商业/国防等)如果你四处询问,人们会一遍又一遍地告诉你同样的事情,但我想知道这些神话是否基于现实.

所以我的问题是:任何人都可以提供定量数据来源,表明谁使用VHDL,谁使用Verilog?再一次,我正在寻找数字,而不是寻找直觉和一般迹象.

comparison verilog vhdl

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

如何使用ghdl在Mac上编译和运行VHDL程序?

我刚刚写了一个简单的VHDL程序.我将文件保存为.vhd文件.然后我编译了它

ghdl -a test.vhd
Run Code Online (Sandbox Code Playgroud)

然后用.构建和执行文件

ghdl -e test
Run Code Online (Sandbox Code Playgroud)

最后试着用它来运行它

ghdl -r test
Run Code Online (Sandbox Code Playgroud)

发生了什么事是我现在有一个work-obj93.cf文件,它是可见的,其他两个文件,即...那些不知何故不可见的.

有人能说出我在Mac上测试vhdl程序到底有多准确吗?也许与GTKWave结合使用.

macos vhdl ghdl

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

在FPGA中编译日期和时间

我可以在类似于C-源代码,宏VHDL东西使用__DATE__,并__TIME__ 借此让该编译时在FPGA作为一种版本的时间戳的?

作为一个>>> new-cmer <<< to VHDL我想修改以下现有代码,它将硬编码日期放入FPGA寄存器.我总是要记住在编译之前调整值.如果这是自动完成的话会更容易.我还可以包括小时/分钟/秒吗?

LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;

ENTITY Datum2 IS
   PORT
   (
        Day         :OUT std_logic_vector(4 downto 0);
        Month       :OUT std_logic_vector(3 downto 0);
        Year        :OUT std_logic_vector(4 downto 0)
   );
END Datum2 ;

ARCHITECTURE rtl OF Datum2 IS

BEGIN
--  "08.08.0013"
    Day   <= conv_std_logic_vector(8, 5);
    Month <= conv_std_logic_vector(8, 4);
    Year  <= conv_std_logic_vector(13, 5);
END ARCHITECTURE rtl;
Run Code Online (Sandbox Code Playgroud)

fpga vhdl intel-fpga nios

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

将长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万
查看次数

为什么上升沿优先于下降沿

触发器(,寄存器......)通常由上升沿或下降沿触发.但是大多数在代码中你会看到一个使用上升沿触发的if子句.事实上,我从未见过具有下降优势的代码.

这是为什么?是因为程序员自然会使用上升沿,因为它们习惯了,或者是因为某些物理/模拟定律/事实,其中上升沿编程更快/更简单/节能/ ......?

hardware synthesis vhdl

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