我的一个朋友需要在硬件中实现一些统计计算.她希望使用VHDL完成它.
(穿过我的心,我还没有用VHDL编写一行代码,对其细微之处一无所知)
特别是,她需要直接模拟MATLAB的betainc功能.
这样做有没有好的方案?任何有关实施的提示也受到高度赞赏.如果它根本不是一个好主意,请告诉我它.
非常感谢!
我是vhdl的新手(使用ISE项目导航器),我有一个小问题来合成这个程序(sequence.vhd):
LIBRARY ieee ;
USE ieee.std_logic_1164.all;
PACKAGE mypack IS
VARIABLE counter: STD_LOGIC := '0' ;
VARIABLE simultaneous : STD_LOGIC := '0' ;
END PACKAGE mypack;
LIBRARY ieee ;
USE ieee.std_logic_1164.all;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
--library work;
USE WORK.mypack.ALL;
ENTITY secuencia IS
PORT(
polh : IN STD_LOGIC; --uno
polv : IN STD_LOGIC; --cero
seq : OUT std_logic_vector(8 downto 0):= (others => 'Z')
);
END secuencia;
ARCHITECTURE registro OF secuencia IS
SIGNAL stack : std_logic_vector(1000 downto 0);
BEGIN
PROCESS(polh, polv)
BEGIN
IF …Run Code Online (Sandbox Code Playgroud) 如何将std_logic向量,bit_vector或任何其他向量转换为字符串?
Signal a,b : UNSIGNED(7 DOWNTO 0);
SIGNAL x,y,z : BIT_VECTOR(7 DOWNTO 0);
...
report "value: " & BIT_VECTOR'Image(x) severity note;
report "and this one: " & to_string(a) severity note;
Run Code Online (Sandbox Code Playgroud)
这不起作用,那么如何将向量转换为字符串?
我只是想在VHDL中创建一个简单的二进制补码设备,但它正在抛弃这个非常烦人的错误,而且我不确定我做错了什么.可能是非常愚蠢的......错误是"错误(10327):twocompliment.vhd(21)的VHDL错误:无法确定运算符的定义""nand"" - 找到0个可能的定义"
代码是
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity twoscompliment is
generic
(
Nbits : positive := 8
);
port
(
--Inputs
A : in std_logic_vector (Nbits-1 downto 0);
--Outputs
Y : out std_logic_vector (Nbits downto 0)
);
end twoscompliment;
architecture twoscompliment_v1 of twoscompliment is
begin
Y <= std_logic_vector(unsigned(A NAND '1') + '1');
end twoscompliment_v1;
Run Code Online (Sandbox Code Playgroud)
任何帮助都是极好的!
我正在为我的设计编写一个通用测试平台,通过漂亮的标准总线与RAM通信.我咨询了一些例子并写成这样:
signal memory: mem_array;
signal mem_address: std_logic_vector(31 downto 0);
signal mem_data: std_logic_vector(31 downto 0);
signal mem_read: std_logic;
signal mem_write: std_logic;
cpu_mem_data <= transport memory(to_integer(unsigned(mem_address))) after DELAY when mem_read = '1' else (others => 'Z');
always : PROCESS
file in_file: text open read_mode is "in.txt";
variable line_str: line;
variable address: std_logic_vector(31 downto 0);
variable data: std_logic_vector(31 downto 0);
BEGIN
reset <= '1';
readline(in_file, line_str);
hread(line_str, address);
starting_pc <= address;
while not endfile(in_file) loop
readline(in_file, line_str);
hread(line_str, address);
read(line_str, data);
memory(to_integer(unsigned(address))) <= …Run Code Online (Sandbox Code Playgroud) 我的一段VHDL代码是:
133 if(grupo = '000' or grupo = '111') then -- 0
134 elsif(grupo = '001' or grupo = '010') then -- 1
135 elsif(grupo = '011') then -- 2
136 elsif(grupo = '100') then -- -2
137 elsif(grupo = '101' or grupo = '110') then -- -1
138 end if;
Run Code Online (Sandbox Code Playgroud)
但是,这个错误来了:
错误:COMP96_0049:Multiplicador.vhd:(133,17):表达式中的语法错误.
错误:COMP96_0015:Multiplicador.vhd:(133,17):')'预期.
错误:COMP96_0019:Multiplicador.vhd:(133,18):关键字'然后'预期.
错误:COMP96_0019:Multiplicador.vhd:(141,6):预期关键字'结束'.
错误:COMP96_0049:Multiplicador.vhd:(141,20):表达式中的语法错误.
错误:COMP96_0015:Multiplicador.vhd:(141,20):')'预期.
错误:COMP96_0019:Multiplicador.vhd:(141,21):关键字'然后'预期.
错误:COMP96_0019:Multiplicador.vhd:(147,9):预期关键字"进程".
错误:COMP96_0015:Multiplicador.vhd:(150,8):';' 预期.
错误:COMP96_0016:Multiplicador.vhd:(150,10):预期的设计单位声明.
但我找不到解决方案.错误在于此部分.
我正在使用VHDL实现一个简单的FSM。我在VHDL中使用此代码,但遇到了以下错误:“未解决的信号NS有多个来源”。我对代码进行了深入研究,但无法弄清楚该错误有人可以帮助我解决此问题吗?
library ieee ;
use ieee.std_logic_1164.all ;
entity MeallyMachine is
port(
x,res,clk:in std_logic;
z1,z2:out std_logic
);
end MooreMachine;
architecture M1 of MooreMachine is
type state_type is(s0,s1,s2,s3);
signal PS,NS:state_type;
begin
ETAT:process(PS,x)
begin
case PS is
when s0=> if (x='0') then
NS<=s0;
elsif (x='1') then
NS<=s1;
end if;
when s1=> if (x='0') then
NS<=s1;
elsif (x='1') then
NS<=s2;
end if;
when s2=> if (x='0') then
NS<=s2;
elsif (x='1') then
NS<=s3;
end if;
when s3=> if (x='0') then
NS<=s3;
elsif (x='1') then
NS<=s0; …Run Code Online (Sandbox Code Playgroud) 我只是想知道是否可以在FPGA板的7段显示器上显示一个句子,例如"SOLD OUT",我只能显示四个字母.
我希望它显示SOLD然后OUT.
如果可以实现,我该怎么办?时钟分频器?
entity timer is
Port ( click : in STD_LOGIC;
clear : out STD_LOGIC;
t_unlock : out STD_LOGIC);
end timer;
architecture Behavioral of timer is
signal temp2 : integer range 0 to 20 := 0;
begin
process
begin
if rising_edge(click) then
temp2<=0;
clear<='0';
t_unlock<='0';
else
temp2<=temp2+1 after 15 ns;
end if;
if temp2=6 then
clear<='1';
elsif temp2=20 then
t_unlock<='1';
end if;
end process;
end Behavioral;
Run Code Online (Sandbox Code Playgroud)
我写了这段代码,编译器说:
Signal temp2 cannot be synthesized, bad synchronous description. The description style you are using to …Run Code Online (Sandbox Code Playgroud)