标签: vhdl

目的是提供多个架构?

我正在学习VHDL,我正在尝试从示例,语法指南和实验中学习.

有一点我不太明白为什么你想要提供多个架构.例如,这个示例MUX代码:

architecture behv1 of Mux is
begin
    process(I3,I2,I1,I0,S)
    begin

        -- use case statement
        case S is
        when "00" =>    O <= I0;
        when "01" =>    O <= I1;
        when "10" =>    O <= I2;
        when "11" =>    O <= I3;
        when others =>  O <= "ZZZ";
    end case;

    end process;
end behv1;

architecture behv2 of Mux is
begin

    -- use when.. else statement
    O <=    I0 when S="00" else
        I1 when S="01" else
        I2 when S="10" else …
Run Code Online (Sandbox Code Playgroud)

hardware syntax vhdl hdl

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

VHDL:是否可以定义带记录的泛型类型?

我试图定义一个复杂的类型(即,一个由实部和虚部组成的类型),并试图找到一种方法使其成为通用的.

This my current static code:

  type complex_vector is record
    Re : signed(15 downto 0);
    Im : signed(15 downto 0);
  end record;
Run Code Online (Sandbox Code Playgroud)

现在我想知道是否有办法使这个通用,换句话说就像:

  type complex_vector (Generic: Integer := WIDTH) is record
    Re : signed(WIDTH downto 0);
    Im : signed(WIDTH downto 0);
  end record;
Run Code Online (Sandbox Code Playgroud)

我试图谷歌寻求解决方案以及浏览我的书籍,但我找不到任何解决方案.真的没有吗?没有记录,就可以做出类似这样的事情:

type blaaa is array (NATURAL range <>) of STD_LOGIC;
Run Code Online (Sandbox Code Playgroud)

感谢您的任何意见

编辑:

或者我可以做以下的事情吗?

type complex_primitives is (re, im);
type complex_vector is array (re to im) of signed(natural range <>);
Run Code Online (Sandbox Code Playgroud)

编译器抱怨但..

types records definition vhdl

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

如何在VHDL和Verilog中设置Eclipse进行FPGA设计?

我是Eclipse的新手,我已经将它用于软件开发,而在Altra环境中用于Nios处理器.但是现在,我有一个非常大的项目,我必须管理,我想使用Eclipse来拥有系统中的所有文件,以便更容易管理和更新.

该项目有多个目录用于各种IP,并具有ASCI,Xilinx和Altera FPGA的多个目标.在不久的将来,该项目将支持NIOS,Microblaze和ARM处理器,如果可能的话,我真的希望将整个项目保存在一个Eclipse项目文件中.我尝试了几种不同的选择,但似乎没有什么工作正常.

我正在寻找一些免费软件,而不是像Sigasi这样的商业程序.

提前谢谢,法哈​​德


这是让其他人了解我的进展的更新.

好吧,我终于设法让它发挥作用.

  • 我在我的电脑上安装了最新版本的Eclipse
  • 已安装的Java版本6(我唯一可以上班的)
  • 在Eclipse中安装了最新版本的VEditor.
  • 将Linux项目目录挂载到PC上的P盘
  • 在Eclipse中创建了一个新项目并将其链接到P驱动器上的项目.

花了一些时间来解决这个问题,但它现在完美无缺.

eclipse verilog eclipse-plugin fpga vhdl

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

是否在VHDL中定义了整数溢出?

我想知道VHDL中是否定义了整数溢出.我无法在2002规范中找到任何内容.

作为一个例子(注意,这可能无法编译,它只是一个通用的例子......):

entity foo is port (
    clk : std_logic
);
end entity;

architecture rtl of foo is
    signal x : integer range 0 to 2 := 0;
begin
    process (clk)
    begin
        if rising_edge(clk) then
            x <= x + 1;
        end if;
    end process;
end architecture;
Run Code Online (Sandbox Code Playgroud)

很明显,x它将从0变为1,然后变为2.是否定义了下一个增量会发生什么?是不确定的行为?

vhdl

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

什么是合成结果中的"门数"以及如何计算

我正在使用设计编译器来合成我的设计,并与另一个设计进行比较(作为我报告中的评估).Synopsys的工具可以轻松地通过命令报告该区域,但在所有论文中,我都读到了关于门数的关注.

我的测验是什么是门数以及如何计算它?

我用谷歌搜索并听说门数计算为total_area/NAND2_area.那么,这是真的吗?

感谢您的阅读,请不要怪我愚蠢的问题:(.

verilog synthesis vhdl area

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

如何在VHDL中声明二维数组及其元素

我需要声明计数器要在2D数组中采用的值.另外,我如何从数组中选择元素并使用它们(比如将它们分配给另一个变量)如何声明这个2D数组的元素?

type lutable is array (0 to 4, 0 to 63) of integer range 0 to 4000;
Run Code Online (Sandbox Code Playgroud)

vhdl

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

VHDL(Xilinx)出错:无法链接设计

为什么我在VHDL中遇到错误?另外,有时候:由于以前的流程失败,无法执行流程?

非常感谢.

vhdl xilinx

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

带VHDL的VGA控制器

我正在尝试使用Terasic的一些书籍和Altera DE1开发套件来学习VHDL编程.

这里的问题是我正在尝试编程一个VGA控制器,分辨率为640x480(虽然我的屏幕是一台1280x1024的TFT LCD).

我在使用代码时遇到了一些问题.

我使用FSM来制作垂直和水平信号,另一个块用于驱动RGB输入,还有一个来自DE1的27 MHz时钟.

我认为代码有问题,因为我在屏幕上打印的图像尺寸不正确(640x480)但更大(约1174x980).

到现在为止,我试图在屏幕上放一个唯一的颜色来简化它,直到我发现错误.

我的项目有3个文件,1个用于块RGB,1个用于FSM,另一个用于实例化它们.

我会很感激某种帮助来解决这个问题,因为我已经努力想出来,但我看不出错误在哪里.

非常感谢!

奥马尔

VGA控制器文件

library ieee;
use ieee.std_logic_1164.all;

entity VGA_controller is
     port(clk, reset : in std_logic;
        Hsync,Vsync : out std_logic;
        R,G,B : out std_logic_vector(3 downto 0));
end entity;

architecture arch of VGA_controller is

component FSM_sync is
    port(clk,reset : in std_logic;
        Hsync,Vsync,VIDON : out std_logic;
        Vcount,Hcount : out integer range 0 to 799);
end component;

component VGA_display is
    port(hcount,vcount : in integer range 0 to 799;
        r,g,b : out std_logic_vector(3 downto …
Run Code Online (Sandbox Code Playgroud)

fpga vhdl vga

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

对于VHDL中的FSM,1,2或3过程意味着什么?

关于如何在VHDL中编码有限状态机(FSM)似乎存在很多争议.人们谈论1流程,2流程或3流程FSM,好像每个人都知道它的含义以及每个流程的作用.但是,我一直无法找到准确的定义,而且存在的例子似乎是矛盾的.

这是一个客观问题:每个FSM风格(1个流程,2个流程,3个流程)的代码有何不同?我知道有一个个人偏好的组成部分,但当然可以客观地回答这个问题并列出每种方法的优点.

谢谢,

coding-style vhdl fsm

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

VHDL中可变数量的输入和输出

我应该在VHDL中创建一个具有可变数量的输入和输出的实体.这个引脚数应该从GENERIC结构中给出.我们假设有这样的代码:

entity HELLO is
    GENERIC(NUM_INPUT: integer:=4;
            NUM_OUTPUT: integer:=2
     );

    port(
         input1 : in std_logic_vector(31 downto 0);
         input2 : in std_logic_vector(31 downto 0);
         input3 : in std_logic_vector(31 downto 0);
         input4 : in std_logic_vector(31 downto 0);
         out1   : out std_logic_vector(31 downto 0); 
         out2   : out std_logic_vector(31 downto 0) 

     );
end entity HELLO; 
Run Code Online (Sandbox Code Playgroud)

显然,手动编写它们(如上例所示)会使GENERIC构造无效.

我希望这4个输入和2个输出根据GENERIC信息自动生成.怎么做?

generics vhdl

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