9271|3

927

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

VHDL syntax error 请各位朋友帮忙找一下错误[谢谢各位,已解决] [复制链接]

本帖最后由 吴下阿蒙 于 2015-2-17 17:36 编辑

Error (10500): VHDL syntax error at bell.vhd(80) near text "process";  expecting "if"
在下刚刚学习cpld,下面的代码是我根据教程输进去的,编译不了,提示上面的错误信息,实在找不到是那里不对,请各位帮忙一下。

--蜂鸣器发出 1,2,3,4,5,6,7
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity bell is
        port
        (
                clk_in: in std_logic; -- 系统时钟
                reset_in: in std_logic; -- 复位
               
                bell_out: out std_logic        
        );
end entity;

architecture behave of bell is

signal clk_tmp:std_logic; -- 10M时钟
signal bell_tmp:std_logic; -- 输出信号
signal pre_div:std_logic_vector(15 DOWNTO 0); -- 分频系数


component gen_div is -- 分频无件调用声明
        generic(div_param:integer:=2); -- 4分频的,产生10M脉冲
        port
        (
                clk:in std_logic;
                bclk:out std_logic;
                resetb:in std_logic               
        );
        end component;
begin
--------------------------
bell_out<=bell_tmp;
--------------------------
gen_10M:        -- 分频产生10M信号
        gen_div generic map(2) -- 4分频
        port map -- 分频无件例化
        (
                clk=>clk_in,
                resetb=>reset_in,
                bclk=>clk_tmp
        );
process(clk_tmp,reset_in)
        variable cnt:std_logic_vector(15 DOWNTO 0):=X"0000";
        variable cnt_p:integer range 0 to 7000:=0;
        begin
                if reset_in='1' then
                        bell_tmp<='0';
                        cnt:=X"0000";
                        cnt_p:=0;
                        pre_div<=X"4A8B"; --1
                else
                        if rising_edge(clk_tmp) then
                                if cnt>=pre_div then
                                        bell_tmp<= not bell_tmp;
                                        cnt:=X"0000";
                                        cnt_p:=cnt_p + 1;
                                        if cnt_p=1000 then
                                                pre_div:=X"426E"; --2
                                        if cnt_p=2000 then
                                                pre_div:=X"3B2F"; --3
                                        if cnt_p=3000 then
                                                pre_div:=X"37F6"; --4
                                        if cnt_p=4000 then
                                                pre_div:=X"31D3"; --5
                                        if cnt_p=5000 then
                                                pre_div:=X"2C63"; --6
                                        if cnt_p=6000 then
                                                pre_div:=X"2789"; --7
                                        if cnt_p=7000 then
                                                cnt_p:=0;
                                                pre_div:=X"4A8B";
                                        end if;
                                else
                                        cnt:=cnt+'1';
                                end if;
                        end if;
                end if;
        end process;  -- 第 80 行
end behave;



此帖出自FPGA/CPLD论坛

最新回复

if cnt_p=1000 then                                                 pre_div:=X"426E"; --2                                         if cnt_p=2000 then                                                 pre_div:=X"3B2F"; --3                                         if cnt_p=3000 then                                                 pre_div:=X"37F6"; --4                                         if cnt_p=4000 then                                                 pre_div:=X"31D3"; --5                                         if cnt_p=5000 then                                                 pre_div:=X"2C63"; --6                                         if cnt_p=6000 then                                                 pre_div:=X"2789"; --7 这些if后面没有end if;  详情 回复 发表于 2015-2-17 12:44
点赞 关注
 

回复
举报

109

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
if cnt_p=1000 then
                                                pre_div:=X"426E"; --2
                                        if cnt_p=2000 then
                                                pre_div:=X"3B2F"; --3
                                        if cnt_p=3000 then
                                                pre_div:=X"37F6"; --4
                                        if cnt_p=4000 then
                                                pre_div:=X"31D3"; --5
                                        if cnt_p=5000 then
                                                pre_div:=X"2C63"; --6
                                        if cnt_p=6000 then
                                                pre_div:=X"2789"; --7
这些if后面没有end if;
此帖出自FPGA/CPLD论坛
 
 

回复

927

帖子

0

TA的资源

纯净的硅(中级)

板凳
 
谢谢k331922164!

下面原来是elsif的,已经改过来了.编译时还出现一个错误:
Error (12006): Node instance "gen_10M" instantiates undefined entity "gen_div"

在这里:
gen_10M:        -- 分频产生10M信号
gen_div generic map(2) -- 4分频

有劳您指点一下。
此帖出自FPGA/CPLD论坛
 
 
 

回复

927

帖子

0

TA的资源

纯净的硅(中级)

4
 
问题解决了,原因是还有一个文件(gen_div.vhd)没有复制到项目的目录下。
此帖出自FPGA/CPLD论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表