标签: vhdl

如何减少逻辑元素的数量

我试图减少我的vhdl代码中的逻辑元素的数量.我正在使用quartus II来编程Altera DE2 FPGA.有人可以就我如何做到这一点给出一些建议吗?

谢谢

fpga vhdl intel-fpga

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

VCD仅通过modelsim转储设计的子部分

我有一个很大的设计,包括测试平台,一些测试电路和被测电路本身.我使用modelsim来模拟设计,我希望有一个模拟转储.我被建议使用以下命令生成转储:

vcd file myvcd1.vcd
vcd add -r /sim_minimips/*
Run Code Online (Sandbox Code Playgroud)

它接缝工作,但我想要的是只为被测电路生成转储.

我试图使用相同的命令来指定我想要考虑的文件的名称:

vcd file myvcd2.vcd
vcd add -r /minimips/*
Run Code Online (Sandbox Code Playgroud)

但是生成了以下错误:

Error vsim 3561 No object matching minimips
Run Code Online (Sandbox Code Playgroud)

我不明白错误,我不确定即使这是隔离子部分的正确程序.

有谁知道怎么做或知道我在哪里可以得到一个关于这个价值变化转储的体面的简单教程?

我附上我的测试台实体:

library IEEE;
use IEEE.std_logic_1164.all;

library std;
use std.textio.all;

library work;
use work.pack_mips.all;

entity sim_minimips is
end;

architecture bench of sim_minimips is

  component minimips is
  port (
      clock    : in std_logic;
      reset    : in std_logic;

      ram_req  : out std_logic;
      ram_adr  : out bus32;
      ram_r_w  : out std_logic;
      ram_data : inout bus32;
      ram_ack  : …
Run Code Online (Sandbox Code Playgroud)

simulation dump vhdl modelsim

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

如何测试VHDL文件

我用VHDL制作了一个双端口寄存器库,我想测试它以确保它有效.我该怎么做呢?我知道我想做什么(将寄存器2设置为常量,在测试程序中读出它,写入寄存器3并将其读回,看看我是否有相同的结果).

唯一的问题是,我是VHDL的新手,所以我不知道是否有控制台或测试程序是如何构建的,或者如何实例化寄存器文件,甚至是编译它的内容(我一直在使用quartus)至今).

这是我的注册文件:

use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_UNSIGNED.all;

-- Register File

entity RF is

port(
    signal clk, we: in std_logic;
    signal ImmediateValue : in std_logic_vector(15 downto 0);
    signal RegisterSelectA, RegisterSelectB : in integer range 0 to 15;

    signal AOut, BOut : out std_logic_vector(15 downto 0)
);

end RF

architecture behavior of RF is

    array std_logic_vector_field is array(15 downto 0) of std_logic_vector(15 downto 0);
    variable registers : std_logic_vector(15 downto 0);

    process (clk, we, RegisterSelectA, RegisterSelectB, ImmediateValue)
        wait until clk'event and clk = …
Run Code Online (Sandbox Code Playgroud)

vhdl

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

如何在VHDL中从内部架构写入两个输出端口?

尝试在VHDL中将组件连接到父层次结构的两个输出端口时遇到问题.由于物理连接只能通过"端口映射"语句完成,因此无法将本地信号连接到多个输出端口.这是一个例子:

在此输入图像描述

上述电路的描述应该是smth.像这样:

entity HIER is
port (
    IN1 : in bit;
    OUT1, OUT2 : out bit);
end hier;

architecture HIER_IMPL of HIER is 
   component BUF is 
      port (a : in bit; o : out bit);
   end component;
begin
   BUF1 : BUF port map (a => IN1, o => OUT1, o => OUT2);
end HIER_IMPL;
Run Code Online (Sandbox Code Playgroud)

但是,输出端口"o"与OUT1和OUT2的双重分配将不起作用,因为它在VHDL中是禁止的.

instantiation vhdl variable-assignment

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

vhdl乘数

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity Lab3_Adder1 is
    Port ( cin : in  STD_LOGIC;
           a : in  STD_LOGIC_VECTOR (3 downto 0);
           b : in  STD_LOGIC_VECTOR (3 downto 0);
           s : out  STD_LOGIC_VECTOR (3 downto 0);
           cout : out  STD_LOGIC);
end Lab3_Adder1;

architecture Behavioral of Lab3_Adder1 is

    SIGNAL c : STD_LOGIC_VECTOR (4 DOWNTO 0);

begin
    c(0) <= cin;
    s <= a XOR b XOR c (3 DOWNTO 0);
    c (4 DOWNTO 1) <= (a AND b) OR (a AND c(3 DOWNTO 0)) …
Run Code Online (Sandbox Code Playgroud)

multiplication vhdl hdl xilinx

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

VHDL等于运算符:std_logic和std_ulogic的不同行为

我有两个设计:

library ieee;
use ieee.std_logic_1164.all;

entity eq_test1 is

  port (a,b : IN std_logic_vector (1 downto 0);
        o   : OUT std_logic); 
end eq_test1;

architecture strange_behavior of eq_test1 is
begin  
    P: process (a,b)
    begin
        if a = b then o <= '1';
        else o <= '0';
        end if;
    end process P;
end strange_behavior;
Run Code Online (Sandbox Code Playgroud)

强制在Modelsim中具有"00"并且b具有"0L"表示o变为"0".因此L不被解释为0,"00"="0L"为假.好.

但是当我采用相同的设计并添加时

use ieee.std_logic_unsigned.all;
Run Code Online (Sandbox Code Playgroud)

到列表中,行为是不同的.然后"00"="0L"返回true,因此L IS与0相同(0变为"1").包含未签名的包,即使"0X"="0Z"也返回true.

有谁能解释为什么?

behavior vhdl modelsim

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

这个"vector(vector'HIGH)='1'"的含义是什么?

我知道'HIGH它是一个数据属性,它返回上面的数组索引,但是向量外面的括号我得不到它.它和vector'HIGH一样?

告诉我,如果有人需要更多信息或其他东西

vhdl

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

VHDL时钟分频器在板上工作但在仿真中失败

我目前正在尝试使用VHDL设计交通灯控制器,我正在Altera EPM240T100C5上编程,带有用于显示交通信号灯的自定义扩展板.由于电路板上最慢的时钟设置仍然比我想要的快,我需要写一个时钟分频器,我这样做:

LIBRARY ieee;
USE ieee.std_logic_1164.all; 

entity clockdivider is 
    port
    (
        clkin :  in  std_logic;
        dividedclk :  out  std_logic
    );
end clockdivider;

architecture divider of clockdivider is 

signal  J :  std_logic;
signal  K :  std_logic;


begin
J <= '1';
K <= '1';


process(clkin)
variable tempdividedclk : std_logic;
begin
if (rising_edge(clkin)) then
    tempdividedclk := (NOT(tempdividedclk) AND J) OR (tempdividedclk AND (NOT(K)));
end if;
    dividedclk <= '0';
    dividedclk <= tempdividedclk;
end process;

END divider;
Run Code Online (Sandbox Code Playgroud)

这在主板上运行良好,但在模拟器(ModelSim)中,"divideclk"输出无法初始化为任何东西.我想知道是否有人知道为什么?

clock vhdl simulate intel-fpga divider

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

在ncvhdl中获取vhdl设计的内部信号(替代modelsim的信号间谍)

在ModelSim中,您可以使用类似的东西

在modelsim中我们可以使用init_signal_spy("../.../ sig",mysignal);

获得深层次的信号.有没有办法通过Cadence的NCVhdl获得这样的信号?

这应该标记为"SimVision",这是工具的名称,但该标志似乎不存在.

vhdl modelsim cadence

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

如何将程序永久存储在FPGA中?

我正在研究一个使用FPGA和Arduino的项目,其中我必须显示我的fpga设备关闭了多长时间.我正在使用BASYS3 FPGA板.一旦我关闭了FPGA,程序就会被删除.

verilog fpga vhdl vlsi

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