社区导航

 

搜索
查看: 1367|回复: 1

[求助] 急求高手编程指教

[复制链接]

8886

TA的帖子

0

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2012-1-29 14:58:53 | 显示全部楼层 |阅读模式
library ieee;
USE ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
entity div_out is
port( din,clk:in std_logic;
chk:in std_logic_vector(7 downto 0);
en,reset:in std_logic;
div_clkut std_logic_vector(11 downto 0);
smut std_logic_vector(3 downto 0);  --A或0
qut std_logic_vector(7 downto 0));
end div_out;
architecture behav of div_out is
signal temp:std_logic_vector(7 downto 0);
signal count:integer range 0 to 7 :=0;
signal num: std_logic;
signal y:std_logic_vector(7 downto 0);
signal D:std_logic_vector(7 downto 0);
SIGNAL c :INTEGER RANGE 0 TO 8;
  signal m:STD_LOGIC_VECTOR(11 DOWNTO 0);
begin
p1:process(clk)
begin
if(clk'event and clk='1')then
m<="000000000000";
if(m="110000110100")then
m<= (OTHERS =>'0');
num <=NOT num;
else
m<=m+1;
end if;
end if;
end process p1;
div_clk<=num;
p2:process(en,reset,clk,din)
begin
if reset='0'then
count<=0;
temp<="00000000";
q<="00000000";
else if(en='1')
then if(clk'event and clk='1')then
if(count=7)then
temp(count)<=din;
y(count)<=din;
q<=temp;
count<=count-1;
else if(count<7and count>0)then
temp(count)<=din;
y(count)<=din;
count<=count-1;
else
temp(0)<=din;
y(0)<=din;
count<=7;
end if;
end if;
end if;
end if;
end if;
end process p2;
p3:process(clk,reset)
begin
D<=chk;
    if reset='0' then
       c<=0;
    elsif clk'event and clk='1' then  --时钟到来时,判断并处理当前输入的位
        CASE c IS
WHEN 0 =>   IF DIN =D(7) THEN c<= 1 ;ELSE c<=0;END IF;
WHEN 1 =>   IF DIN =D(6) THEN c<= 2 ;ELSE c<=0;END IF;
WHEN 2 =>   IF DIN =D(5) THEN c<= 3 ;ELSE c<=0;END IF;
WHEN 3 =>   IF DIN =D(4) THEN c<= 4 ;ELSE c<=0;END IF;
WHEN 4 =>   IF DIN =D(3) THEN c<= 5 ;ELSE c<=0;END IF;
WHEN 5 =>   IF DIN =D(2) THEN c<= 6 ;ELSE c<=0;END IF;
WHEN 6 =>   IF DIN =D(1) THEN c<= 7 ;ELSE c<=0;END IF;
WHEN 7 =>   IF DIN =D(0) THEN c<= 8 ;ELSE c<=0;END IF;
WHEN OTHERS => c<=0;
END CASE;
END IF;
END PROCESS ;
PROCESS(c)
BEGIN
      IF c=8  THEN sm<= "1010";      
      ELSE          sm<= "0000";              
      END IF ;
END PROCESS;
END behav;
在这个程序中,我在编译时,发现那个H<=H+1,总是出现不能定义加法操作,这是咋回事呀?求高手指教。
此帖出自FPGA/CPLD论坛
一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!


回复

使用道具 举报

899

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2012-1-29 15:24:19 | 显示全部楼层

 报错的原因:编译器不能识别这个“+”,原因是的你的程序开头没有包括IEEE的算术运算符号库。

添加下面三个文件应该解决你的问题:
    library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_signed.all;



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-1-21 03:17 , Processed in 0.109951 second(s), 17 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表