标签: vhdl

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

VHDL的隐藏功能

最初的问题是:

VHDL中有哪些非常有用但却深奥的语言功能,你实际上可以用来做有用的工作?

原来的问题被删除了,我只是在回答.我认为这是一个有趣的问题,特别是当您将VHDL与其他(普通)编程语言进行比较时.

免责声明:我在VHDL中只做了一些简单的例子.

但是,与其他编程语言相比,我特别喜欢它(这可能不是你所要求的,但我认为只是对于这些事情,每个程序员都应该知道一点VHDL):

  1. 能够拥有单个界面的多种不同实现(体系结构),并轻松交换它们.

  2. 语言模型固有的低开销并行性.它让我想起了数据流语言.

vhdl

10
推荐指数
3
解决办法
6430
查看次数

是否存在与Verilog的@(*)相当的VHDL,即自动过程灵敏度列表

更新组合过程很容易,忘记更新灵敏度列表.在Verilog中,引入了@(*)来表示灵敏度列表是在此过程中使用的.VHDL中有等价的吗?

vhdl

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

高级VHDL配置是否曾在现实生活中使用过?

VHDL配置可用于将组件绑定到具有不同名称的实体,甚至可以使用完全不同的端口.[查看此文章了解更多信息]

  configuration c2 of testbench is
    for str
        for dut_inst : dut
            use entity work.unrelated(rtl)
                port map(
                    port1 => a,
                    port2 => b,
                    port3 => c,
                    port4 => "unused"
                );
        end for;
    end for;
  end configuration c2;
Run Code Online (Sandbox Code Playgroud)

你们有没有见过这种商业项目项目?放弃一个看似无关的实体的目的是什么?为什么他们不只是改变实例化代码?

我可以弥补假设情况,但我对现实生活中的用例很感兴趣.

vhdl

10
推荐指数
2
解决办法
2619
查看次数

VHDL中<=和:=之间有什么区别?

目前,我正在学习一些使用VHDL的FPGA设计技术,我的问题是我们是否可以在VHDL中使用:=和<=可互换,尽管我已经看到在常量声明中使用:=和<=在赋值中?提前致谢!

embedded logic vhdl colon-equals

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

VHDL:使用整数通用的长度来确定选择行的数量

我正在尝试创建一个可重复使用的桶形移位器; 它需要一个输入的位数组并将它们移位一定数量的位置(由另一个输入确定).我想参数化模块,以便它适用于任何模块n.

所需的选择行数由n- > 确定,即SHIFT_CNT = log2(NUMBITS-1)+1在下面的代码中.它被认为是不好的形式在我的组织(我认为整体的)有不属于港口std_logic_vectorstd_logic,所以我用一个std_logic_vector用于选择线的数量.我需要调整std_logic_vector基于输入泛型的长度.有没有办法在不使用第二个通用的情况下执行此操作?我看过这篇文章,但它没有涉及泛型.这篇文章完全消除了泛型或使用日志值作为泛型,这对于未来的用户来说并不直观(如果INPUT不是2的幂,可能会导致问题).

以下声明SHIFT_CNT绝对不正确; 有没有办法在不使用第二个通用的情况下自动生成实体声明中的长度?

entity BarrelShifter is

generic ( NUMBITS : integer :=8);                                                   
Port    ( INPUT     : in   std_logic_vector (NUMBITS-1 downto 0);                
          OUTPUT    : out  std_logic_vector (NUMBITS-1 downto 0);                
          SHIFT_CNT : in   std_logic_vector ((NUMBITS-1)'length downto 0)                 
        );                                                               
end BarrelShifter;
Run Code Online (Sandbox Code Playgroud)

generics vhdl

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

快速,小面积和低延迟的部分排序算法

我正在寻找一个快速的方式做81号的部分排序 - 理想的情况下我期待提取最低16个值(它不是必需的16是在绝对正确的顺序).

这样做的目标是在FPGA专用硬件 - 所以这个稍微复杂的问题,因为我想要的结果执行的面积尽可能小.我看了看,并实施了奇偶合并排序算法,但我的理想在寻找什么,可能是我的需求更有效的(贸易算法实现大小的部分排序,以便给予最低16,不一定而不是一个完整的)

任何建议都会非常受欢迎

非常感谢

sorting algorithm verilog fpga vhdl

10
推荐指数
2
解决办法
3434
查看次数

可以在端口声明中使用自定义类型吗?

我正在准备考试,通过一些旧的考试.其中一个问题是:

编写实现图中同步FSM的可综合行为VHDL代码... FSM有一个输入,称为请求,具有值(r1,r2,r3)的枚举类型...

这让我想写这段代码:

entity fsm is
  port ( clk     : in  std_logic;
         request : in  my_enum_type
  );
end fsm;
Run Code Online (Sandbox Code Playgroud)

某处有一个:

type my_enum_type is (r1, r2, r3);
Run Code Online (Sandbox Code Playgroud)

在某个地方(我已经尝试了正确的端口声明和建筑声明之后).

但我似乎无法让它发挥作用.我可以将自定义类型作为输入或输出吗?

vhdl

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

将STD_LOGIC_VECTOR中的单个位分配给STD_LOGIC

好像我已经做了很多次,但由于某种原因,今天它只是不想工作.

我想将16位向量的MSB分配给单位变量.

Din : in  STD_LOGIC_VECTOR (15 downto 0);

...

signal signBit : std_logic;

begin
    signBit <= Din(15 downto 15);
Run Code Online (Sandbox Code Playgroud)

给出的错误是:

Type of signBit is incompatible with type of Din.
Run Code Online (Sandbox Code Playgroud)

是的,我得到它,向量与std_logic不一致,但这是1位,清楚地表示为(15 downto 15)

vhdl

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

标签 统计

vhdl ×10

fpga ×2

algorithm ×1

colon-equals ×1

embedded ×1

generics ×1

intel-fpga ×1

logic ×1

nios ×1

sorting ×1

verilog ×1