VHDL运算符参数类型不匹配

我在VHDL中有一个非常简单的运算符问题。我试图将一些输入与逻辑运算符进行比较,但得到一条错误消息 entity test is port ( paddr : in std_logic_vector(15 downto 0); psel : in std_logic; penable : in std_logic; pwrite : in std_logic )

Vhdl 如何重新编译GHDL源代码

请告诉我在源代码中编辑特定文件后如何重新编译GHDL源代码的步骤? 提前谢谢。 当做 拉古公司svn://svn.gna.org/svn/ghdl/trunk ghdl 阅读说明,按照说明进行操作 回来问一些具体的问题为什么要标记这个linux内核?AFAIK GHDL是VHDL硬件描述语言的编译器。您的第一个资源应该是项目文档。虽然如果您在linux上,并且您的发行版提供了GHDL软件包,您可能可以使用软件包管理器在更改之前或之后,以标准方式下载源代码并构建和安装它。来源仍然可用吗?

Vhdl 超出非静态回路限制

我想实现用于256位向量的汉明权重计算的K&R算法。我用vhdl编写的代码如下: entity counter_loop is Port ( dataIn : in STD_LOGIC_VECTOR (255 downto 0); dataOut : out STD_LOGIC_VECTOR (8 downto 0); threshold : in STD_LOGIC_VECTOR (8 downto 0); c

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

我需要声明计数器将在2D数组中接受的值。另外,如何从数组中选择元素并使用它们(比如将它们分配给另一个变量) 如何声明此二维数组的元素 type lutable is array (0 to 4, 0 to 63) of integer range 0 to 4000; 在二维阵列中,例如: type lutable is array (0 to 4, 0 to 2) of integer range 0 to 4000; signal sample_array: lutable; 您可以按

将多维systemverilog端口连接到vhdl模块

我试图在vhdl顶层模块中实例化systemverilog模块。systemverilog模块使用一个二维压缩数组“channel_addr_i”(一个包含3个地址的压缩数组,每个地址由3位组成) SystemVerilog模块声明: `define N_PORTS 3 `define N_CHANNELS 4 module pwr_ctrl( input logic clk, rst_n, inp

Vhdl 什么时候应该使用endfile,在读取之前还是之后?

在寻找从文件中读取文本的示例时(使用readline和read),我经常看到如下代码,但没有找到有关endfile的确切功能的信息 while not endfile(in_file) loop readline(in_file, in_line); read(in_line, in_data); end loop; 在我所知道的所有其他语言中,在读取文件中的行之后,而不是之前,将检查文件的结尾 使此用法正确的endfile的语义是什么?来自IEEE VHDL标准: 3.4.1

端口映射中存在错误的VHDL自动售货机

我正在做一个自动售货机项目,唯一的问题是Seg的端口图,我在那里得到了这个错误: 警告:COMP96_0411:reu.vhd:(363,31):无法将模式“out”的实际值分配给模式“in”的形式“x”。 错误:COMP96_0100:reu.vhd:(363,36):端口映射中的实际参数类型与正式端口“display”的类型不匹配 在四个地方 设计的顶层: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.

Vhdl Xilinx-ISE块ram推理的鲁棒性

我有一个关于Xilinx ISE块ram推断的健壮性的问题 我没有在我的机器上安装xilinx ise(今天),但我通常使用专用编码完美推断块RAM,基本上依赖于: type ram_type is array(2**ADDR_WIDTH-1 downto 0) of std_logic_vector(DATA_WIDTH-1 downto 0); 我的问题是:你能告诉我ISE是否能推断出一个正确的内存块吗 signed(DATA_WIDTH-1 downto 0)` instead of

如何在vhdl中使用三输入逻辑门?

我正在学习vhdl,并且正在尝试使用3输入与非门。我的密码是: G => (A nand B nand C) after 3 ns; 但这并没有编译。哦,我想我可能知道 G <= (A nand B nand C); G我不是VHDL方面的专家,但我认为您有几个错误-可能是: G <= not (A and B and C) after 3 ns; G该行的“3ns后”部分是什么?请容忍我,我已经好几年没有这样做了。另外,您是否有任何相关的错误消息?@Akron:3ns后

与选项相关的VHDL错误

我正在制作一个N到2^N的解码器,并且面临一些错误。请帮帮我 Naddr-地址位数整数 addr-地址位std\u逻辑\u向量 fbd-(整数,std\u逻辑\u向量)-用于从 二进制到十进制 fpower-(整数)-提供2^N的函数 代码: 德科的建筑装饰是 开始 过程(地址,En) 变量a:整数; 开始 a:=fbd(Naddr,addr); 如果(En='1'),则 q'1',其他=>'0');--错误1 elsif(En='0')然后 q‘0’; 如果结束; 结束过程; 端装饰;

可变大小的位移位寄存器vhdl

我试图获得两个输出(pulse(0)和pulse(1)),以提供一个短的单时钟脉冲。这些脉冲之间的延迟需要由一些输入值控制。因此0x1=1个时钟周期等 目前,一旦触发器打开,它将保持打开状态 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use ieee.numeric_std.all; use work.ipbus.all; <...snip> architecture rtl of trig_latency is signal ac

Vhdl ALTERA中的ALTFP_添加_子功能

我有以下实体调用由Quartus II下的megafunction向导创建的add_sub megafunction: library ieee; use ieee.std_logic_1164.all; library altera_mf; use altera_mf.altera_mf_components.all; entity fp_adder is port(clock : in std_logic; dataa : in STD_LOGIC_VECTOR (

关于微程序控制(VHDL)的几个问题

我需要实现这个原理图。我已经完成了数据路径/内存/控制内存。 我不知道如何建造我用红色标记的零件。有人能给我一些指点吗? 这是我必须做的作业的一部分,我完全被这部分卡住了。你有一张照片。这是一个很好的起点 现在写一篇描述每个人的工作。例如,PC是一个寄存器,它按照正常指令递增,并在分支和/或跳转指令期间有条件地加载值。在一般说明中填写详细信息并编写代码 对您拥有的每个其他块(IR、MUXC、CAR)执行相同的操作。它只是在仔细考虑细节 我确实试着分别研究每一点,但我需要的是简单的,外行的定义和解

是VHDL包';IEEE.标准逻辑运算';是否随ghdl一起装运?

我试图用GHDL模拟Xilinx GTXE2收发器。在GTXE2_CHANNEL.vhd中,我得到一个错误,在库“ieee”中找不到“std_logic_arith” 首先,这是我的机器设置: Windows 7(pro、x64、德语) PowerShell 4.0 Python 3.4 Xilinx ISE 14.7(x64,英语) Xilinx Vivado 2014.2(x64,英语) 适用于Windows的GHDL 0.31() 所以问题1:GHDL中是否包含此包 我试图将VHD

Xillinx VHDL代码错误

我试图写一个vhdl代码,它给了我更多我试图写一个有5个状态(S0,S1,S2,S3,S4)的序列代码 我能做什么 在这一行中 if reset = '1' then prst <='0'; Type of prst is incompatible with type of '0'. if reset = '1' then prst <='0'; if reset = '1' then prst <= S0;

VHDL合成错误。无法合成信号blk_指针,同步描述错误

我对代码的合成有问题。 显示的错误是“无法合成信号blk_指针,同步描述错误。当前软件版本不支持您用于描述同步元素(寄存器、内存等)的描述样式。” 我想保存两台设备之间的通信消息。具有下降沿和上升沿的部分用于查找消息的当前部分,并创建指向该部分的指针(msg_指针、blk_指针)。然后我想将当前值保存到缓冲区 当我删除最后一个部分(使用for循环的部分)时,它会起作用 过程(通信延迟) 变量msg_指针:整数范围0到20:=0--指向多个消息块 变量blk_指针:整数范围0到50:=0--指向当

Vhdl代码模拟

我试图模拟以下代码: entity schal is port ( SW : in bit_vector(7 downto 0); LED : out bit_vector(7 downto 0)); end schal; architecture BEHAVIOUR of schal is begin INOUT_PROS : process (SW) begin LED <= SW; end process INOUT_PROS; end BE

如何在VHDL中使用带相邻下划线标识符的verilog模块

我有一个来自外部供应商的verilog模块。我想用VHDL来包装它 问题是verilog模块包含的标识符名称中有相邻的下划线。VHDL似乎不允许这样做。当然,我可以将verilog模块包装到另一个verilog模块中,然后将其包装到VHDL模块中,但是没有办法避免它吗 我写了一个小例子来说明: Verilog: module underscore ( test__in, test__out ); input test__in; output test__out; assign t

ModelSim模拟器中实体没有输出-VHDL

我已经用VHDL编写了一个简单的实体来闪烁LED,并试图在ModelSim中模拟它,但在输出上没有得到转换 这是我的LED闪烁实体的HDL文件: Library IEEE; use IEEE.Std_logic_1164.all; entity LED_Blink is generic ( g_SYSTEM_CLOCK_PERIOD : in time := 10 ns; -- 100 MHz clock period g_LED_ON_TIME :

VHDL 2进程状态机和输出初始化

所以Altera提供了一个2进程状态机的示例 我有点喜欢这种风格,但我不明白的是,如果“输入”保持在“0”,第二个进程就不会被触发,因为状态永远不会改变,“输出”也就永远不会被分配或初始化。。。还是这样 我的理解是,其中一个灵敏度列表信号(“本例中的状态”)上需要有一个转换,这在这里永远不会发生 有人能澄清一下这是怎么回事吗 代码如下: ENTITY state_machine IS PORT( clk : IN STD_LOGIC; input

运行vhdl代码时出错

我正在运行一个VHDL代码,但是编译时在端口映射行遇到了错误。问题是什么?我该如何解决 错误是: 错误(10500):文本“端口”附近DU.vhd(52)处的VHDL语法错误;应为“(”或“”或“.” 我的代码: library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_UNSIGNED.all; entity DU is port( Clk : in std_logic; state : i

在可移植VHDL中使用特定于供应商的原语

我的项目是用可移植的VHDL编写的(主要是用GHDL开发的),但我想利用供应商特定的原语(例如乘法器),如果它们可用的话 例如,在C/C++中,您可以使用#ifdef根据CPU体系结构或编译器供应商等情况有条件地选择不同的代码段 您是否可以在VHDL中使用类似的语言,例如区分Xilinx或Altera/Intel目标?您可以使用生成语句和特定于供应商的实体+体系结构。大量使用此技术来创建 例如,看看PoC的片上存储器(ocram)抽象层: 这里,它为Altera设备实例化了一个特殊实体。对于其他

加法器在VHDL比较中的实现

有人能解释一下为什么这个实现是有效的吗 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use ieee.numeric_std.all; entity Adder is port(A: in std_logic_vector(3 downto 0); B: in std_logic_vector(3 downto 0); SUM: out std_logic_vector(3 downto 0); CO: out std_

Vhdl 即时发生的时钟过程中的信号分配

因此,我有一个足够简单的时钟过程,将一个std\u logic\u vector的值分配给另一个 capture_proc: process(clk) begin if rising_edge(clk) then captured_data <= sdram_din; end if; end process; 捕获过程:过程(clk) 开始 如果上升沿(clk),则 捕获的数据 我的问题是,在clk的上升沿上,输入捕获的_数据的值可由同一上升沿上的其他

Vhdl 组件与实体的默认通用值

考虑以下代码: entity foo is generic ( X : natural := 9 ); end entity foo; architecture behav of foo is begin process begin report foo'instance_name & " : " & integer'image(X) severity note; wait; end process; end architectu

Vhdl 我可以在多个模块实例上聚合别名中的信号吗?

我正在用VHDL编写一个顶级测试台,在设计的某个阶段,我生成了多个模块: MOD_GEN: for i in 0 to 3 generate mod_i: example_module (...) end generate; 出于某些测试目的,我需要一个来自example_模块实例的内部信号被带到顶部测试台。但是,我不想使用: alias tested_sig_0 is << signal (...).MOD_GEN(0).mod_i.tested_sig : std_l

Vhdl 创建有限状态机时遇到的问题

我正在为一项任务创建一个状态机和vhdl代码。它涉及一台使用FPGA控制其功能的机器。它有一个100兆赫的时钟,占空比为50%。用户按下机器上的按钮,led亮起。一旦发生这种情况,机器开始在数据线上查找数据序列(前导码)。一旦检测到前导码,伺服顺时针旋转到90度位置,保持上升10秒,然后整个系统复位。伺服的周期为20ms,起始位置的占空比为1.0ms,垂直位置的占空比为1.5ms。前导序列为1-0-1-0-0-0-0-1-0-1-0-0-0-0-0-1,比特周期为0.5微秒 我已经有好几年没有用

Vhdl Xilinx-ISE:found';0';“运营商的定义”+&引用;,无法确定“的确切重载匹配定义”+&引用;

我正在将Bin写入BCD代码乘法器,在顶部模块Xilinx ISE中出现以下错误: 第30行:找到运算符“+”的“0”定义,无法确定精确的 “+”的重载匹配定义 而我已将端口映射到顶部模块 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; -- Uncomment the following library declaration if using -- arithmetic functions with

VHDL-2008外部名称:参考verilog net?

是否可以使用VHDL-2008分层引用/外部名称引用Verilog网络?Questa Sim(10.6c)停止模拟,并显示以下错误消息: vsim-8509:“dut_i.my_net”的对象类“SIGNAL”与所表示对象的类“net”不同。 以下是失败的VHDL代码: alias my_alias is << signal dut_i.my_net : std_logic >>; 别名我的别名是>; 根据Questa用户手册: Questa SIM支持IEEE 107

VHDL编译器在实体定义结尾处出现语法错误

实体是由IDE创建的,并且似乎随机开始给我一个语法错误。我尝试重新启动IDE,因为它有时会工作,但这次没有工作。 编译器在“end”附近显示语法错误。问题行是end design1 library IEEE; use IEEE.STD_LOGIC_1164.ALL; -- Uncomment the following library declaration if using -- arithmetic functions with Signed or Unsigned values --us

如何用vhdl生成正弦波?

我是vhdl的初学者,我试图生成频率为50MHz的正弦和方形信号,但首先我试图生成正弦波。我看过很多教程,但理解起来相当复杂。这是我写的代码。提前感谢您的帮助:) IEEE库; 使用IEEE.STD_LOGIC_1164.ALL; 使用IEEE.STD_LOGIC_UNSIGNED.ALL; 使用IEEE.STD_LOGIC_ARITH.ALL; 实体窦房结 端口(时钟:在标准逻辑中; 清除:在标准逻辑中; sel:标准逻辑向量(1到0); 数据输出:输出标准逻辑向量(7到0); 端窦; 窦的

Vhdl 使用Xilinx ISE设计套件在Spartan 6上生成单端口ROM

我在设计斯巴达6板上的单端口rom时遇到了一些问题。我使用提供的core generator创建块内存,并选择32位宽、256位深的单端口rom,其中coe文件的计数范围仅为0到255。我将rom作为一个组件放入vhdl中,并将XilinxCoreLib添加为库。当我试图生成编程文件时,我得到了翻译错误: logical block 'rom1' with type 'rom' could not be resolved. A pin name misspelling can cause thi

VHDL时钟同步器中的综合误差

我试图在下面的VHDL代码中实现时钟同步和时钟分频器。时钟(时钟rx和时钟tx)应在总线上“rx”信号的上升沿和下降沿同步。我可以模拟以下内容,但在ISE中无法合成,因为我使用的是“RX”事件。有谁能提出一个替代方案吗?(Verilog也将起作用) --------------------------------------------时钟分频器----------------------------------------------------------------------------

VHDL中行为模型程序和数据流模型程序之间的混淆

我正在使用Douglas L Perry的第四版教材“VHDL:通过示例编程”。他在第4页给出了数据流编程模型的示例: 代码一: ENTITY mux IS PORT ( a, b, c, d : IN BIT; s0, s1 : IN BIT; x, : OUT BIT); END mux; ARCHITECTURE dataflow OF mux IS SIGNAL select : INTEGER; BEGIN select <= 0 WHEN s0 = ‘0’ AND s1 = ‘

顺序逻辑与组合逻辑(Verilog和VHDL)

以下代码1和代码2在Verilog中是等效的,这是真的吗 代码1 always@(posedge Clock or B or C) begin if (B) A <= 0; else if (C) A <= 1; end 代码6 always @ ( * ) begin if ( Trigger ) begin A = Pass ; end else begin A = A; end

Vhdl 从STD_逻辑_向量向STD_逻辑分配一个位

看起来我已经做了很多次了,但由于某种原因,今天它只是不想工作 我想将16位向量的MSB分配给一个位变量 Din : in STD_LOGIC_VECTOR (15 downto 0); ... signal signBit : std_logic; begin signBit <= Din(15 downto 15); 是的,我明白了,向量与std_逻辑的关系不太好,但这是1位的,明确表示为(15到15) 是标准逻辑向量,1位长 Din(15); 是std_逻辑向量的一

Vhdl LFSR仅在模拟器上不在FPGA上工作

我试图看到一个8位LFSR在Altera DE2上工作,我用VHDL写了一个代码,它在ModelSim上运行良好,但在FPGA上看不到它工作。代码如下: library ieee; use ieee.std_logic_1164.all; entity lfsr_8bit is port ( CLOCK_50 : in std_logic; rst : in std_logic; LEDG : out std_logic_vector(7 downto 0)); end

Vhdl 在de1板的状态机中增加七段显示

我正在使用状态机创建一个倒计时计时器,在启动时显示00:00,当按下键1时,您可以通过将分钟增加/减少1来输入时间,如果按住“向上/向下”按钮5个周期,它将向上/向下增加5。多亏了一些很棒的帮助@DavidKoontz,我已经完成了代码。我的代码b/c中的按钮不需要去抖动,我的altera板似乎很好地接收到了低信号。因为我只使用了一个时钟,按钮反应缓慢b/c,时钟设置为1Hz Library ieee; USE ieee.std_logic_1164.ALL; ENTITY CountDownT

VHDL中的变量到底是什么?

我知道如何在VHDL中使用变量,以及我能用它做什么,但我不知道它在硬件中到底是什么 硬件中信号和变量之间的区别是什么?变量的值存储在哪里? 这是电线还是取决于我的密码 根据“QuantumRipple”的评论,我扩展了这个问题: 我使用ISE(Xilinx合成工具)合成了以下简单代码,并将变量(var)合成为D触发器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY test IS port( clk : in

Vhdl 交通灯 IEEE库; 使用IEEE.STD_LOGIC_1164.ALL; 实体交通灯是 端口(时钟:在标准逻辑中; 复位:在标准逻辑中; 输入:在标准逻辑中; 输出:输出标准逻辑向量(1到0); 结束交通灯; 交通灯的建筑行为是 类型状态_类型为(S0、S1、S2)--状态机的类型。 信号当前状态、下一状态:状态类型--当前和下一个状态声明。 开始 过程 开始 等待clk'事件和clk='0'; 当前状态

首先用当前状态替换当前状态。然后您不能从两个进程驱动当前状态,因为它不是已解析类型。你必须做一些类似的事情 library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity Traffic_Light is Port ( clk : in STD_LOGIC; reset : in STD_LOGIC; input : in STD_LOGIC; output : out STD_LOGIC_VECTOR(

Vhdl 无符号乘法创建一个x2大小的数组

我试图通过使用乘法(*2)将位移位一个位置来创建一个移位寄存器 然而,当我这样做的时候,ISE(Xilinx IDE)告诉我这个表达式的元素数是原始信号的x2 具体来说,我: if rising_edge(clk) then registro <= unsigned(sequence); registro <= registro * 2; -- Just adds into the last position the new bit, Sin (signal inp

结构vhdl:创建一个;“主要功能”;

我想创建一个实现“main”函数的结构VHDL文件。“顶级”文件是design,运行代码的程序是prog。假设fulladd_pack包含fulladd组件,如何“链接”两个VHDL文件 *我也没有得到主要的论点,以使这项工作 -- design.vhdl library ieee; use ieee.std_logic_1164.all; use work.fulladd_pack.all; ENTITY design IS port(Cin : IN STD_LO

VHDL:组件端口映射中的索引

在上面的代码片段中,我试图将'DATA'串行地传递给测试台中组件comp_A1的'DATA_In'引脚“数据”和“计数”都是标准逻辑向量。所有其他信号均为std_逻辑“数据”是大小为64位的恒定向量,“计数”是在每个上升沿(CLK)递增的向量 在编译期间,模型Sim仅显示以下错误: (vcom-1450)正式“数据输入”的实际(索引名称)不是静态信号名称 VHDL编译器正在退出 错误与“计数”是动态的有关吗?解决方法是什么?只需将使用行数据创建的多路复用器(to_integer(unsigned

Vhdl 如何在设定的时钟周期内运行模拟

对所有人来说, 我不熟悉VHDL。我有一个工作的设计,但我的模拟一直运行,直到我取消模拟。在测试台上,我如何在x个时钟周期后停止模拟?这是在时钟过程中完成的吗 clk_process :process begin clk <= '0'; wait for clk_period/2; clk <= '1'; wait for clk_period/2; end process; clk\u流程:流程 开始 VHDL-2008中的cl

VHDL和Verilog中的相同设计。但是不同的速度和资源使用?

我有两个代码,一个在Verilog中,另一个在vhdl中,它以16位二进制数计算一个的数量。两者都做同样的事情,但在使用Xilinx ISE进行合成后,我得到了不同的合成报告 Verilog代码: module num_ones_for( input [15:0] A, output reg [4:0] ones ); integer i; always@(A) begin ones = 0; //initialize count variable.

我已经用VHDL为我的项目编写了代码,但是我在使用信号时遇到了一个错误 IEEE库; 使用IEEE.STD_LOGIC_1164.ALL; 实体密钥生成是 端口(键:标准逻辑向量中(127向下至0); rc:标准逻辑向量(3到0); 键出:输出标准逻辑向量(127向下至0); 结束密钥生成; 密钥生成的体系结构是 组件sbox是 端口(a:标准逻辑向量(7到0); y:输出标准逻辑向量(7到0); 端部元件; 组件RCON是 端口(rc:标准逻辑向量(3到0); 路由:输出标准逻辑向量(31向下到0); 端部元件; 信号w0,w1,w2,w3,tem:STD_逻辑_向量(31向下至0); 信号路由1:STD_逻辑_向量(31向下至0); 开始 --下面第52行 w0

2个错误: VHDL不将[]用于索引数组(尽管它们用于签名)。改用()为数组编制索引 VHDL中没有^运算符。改用异或。2个错误: VHDL不将[]用于索引数组(尽管它们用于签名)。改用()为数组编制索引 VHDL中没有^运算符。改用异或。你不是这个意思: library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity keygeneration is Port ( key : in STD_LOGIC_VECTOR (127 downto 0);

VHDL LR移位器循环未更新

我这里有我的代码,但当我运行TB时,我遇到了一个问题,即当我离开左侧时,换档不起作用,并且时钟有另一个上升沿 这里的目标是制作一个左右并行移位寄存器。 寄存器必须在时钟的每个上升沿上更新。 当le高时,它加载信息,当left高时,它应该执行左循环移位。若右高,它应该做右循环移位 我做错了什么 --------------------------------------------------------- -- Description: -- An n-bit register (para

Vhdl比较标准逻辑向量 IEEE库; 使用IEEE.std_logic_1164.all; 使用ieee.std_logic_unsigned.all; 使用ieee.numeric_std.all; 实体转换器是 端口(符号符号:标准逻辑向量(3到0); 两个S_com:输出标准逻辑向量(3到0); 结束; 转换器的体系结构 开始 如果to_integer(sign(sign_mag))>0,则 twos_com

也许这有帮助: ieee库; 使用ieee.std_logic_1164.all; 使用ieee.numeric_std.all; 实体转换器是 一般的( num_长度:整数:=4 ); 港口( 数字:在标准逻辑向量中((num长度-1)向下至0); 结果:输出标准逻辑向量((num_长度-1)到0); 端部转换器; 介绍了变频器的结构特点 信号温度:标准逻辑向量((num_长度-1)向下至0):=(其他=>“0”); 开始 结果是0 temp如注释中所述,if-then-else是一个顺序语

上一页   1   2   3   4    5   6  ... 下一页 最后一页 共 83 页