微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于vhdl中数组查找最大值

关于vhdl中数组查找最大值

时间:10-02 整理:3721RD 点击:
本人才学习VHDL语言,写了个查找最大值的程序,但编译总通不过,请教下哪出错?
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_unsigned.all;
type arr is array(35 downto 0) of std_logic_vector(8 downto 0);
entity findmax is
port (en:in std_logic;
      ori-matrix:in arr;
      maxut std_logic_vector(8 downto 0);      
      p,qut integer);
end findmax;
architecture behavioral of findmax is
signal a:std_logic_vector(8 downto 0);
begin
    variable i:integer:=0;
  if en='1' then
      while i<35 loop
   if i=0or7or14or21or28or35 then
    i<=i+1;
    elsif ori-matrix(i)(7 down to 0)>ori-matrix(i+1)(7 down to 0)
    then a<=ori-matrix(i);
    else a<=ori-matrix(i+1);
    i<=i+1;
    end if;
   end if;
   end loop;
   p<=i/6+1;
   q<=rem(i/6)+1;
  end if;
  max<=a;
end behavioral;

编译提示错误
** Error: D:/pca/findmax.vhd(5): near "type": expecting: ARCHITECTURE CONFIGURATION ENTITY LIBRARY PACKAGE USE
** Error: D:/pca/findmax.vhd(8): near "-": expecting: ':'
** Error: D:/pca/findmax.vhd(16): near "variable": expecting: END

觉得你的程序有很多问题
1.没有见过将数组定义为输入端口的
2.你的进程(process)在哪里?没有敏感信号,怎么做事情?
还有我觉得你是在用c语言的思路在写vhdl,最好参照别人写的代码来规范自己
我是从fpga的角度来说的,呵呵,不对的话请见谅

** Error: D:/pca/findmax.vhd(5): near "type": expecting: ARCHITECTURE CONFIGURATION ENTITY LIBRARY PACKAGE USE
** Error: D:/pca/findmax.vhd(8): near "-": expecting: ':'
** Error: D:/pca/findmax.vhd(16): near "variable": expecting: END
同意楼上说法,这里仅解释你提出的这几个错误:
第一行,你的数据类型应该定义在包集合中或构造体中;
第二行,端口命名只能用下划线;
第三行,变量应定义在进程或过程或函数中。

2# qd0090
哦,谢谢,我去尝试下..刚学VHDL光看书好多语法规则都没有..

2# qd0090 还有个问题,就是我的输入端需要一个矩阵怎么办,不用数组,应该用什么呢?

你需要补充硬件基本知识,这不是写软件,是描述硬件电路。
你写的每句代码,先在脑里想想,这句话对应的硬件电路是什么

in port的类型可以是任意的。你可以将这个port定义为数组类型。矩阵也是数组,是二维数组。

学Verilog吧上手快点
vhdl规则复杂得很

8# lhlhualin
毕设要去用VHDL。我也没办法啊...

报错信息很清楚的说明需要修改的地方了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top