急问:VHDL在编译顶层电路图的错误问题?

feiyun2002gl 2007-05-29 12:27:02
错误如下:Tri-state node must be driven by a TRI buffer, but is driven by primitive
ROM代码如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MODE_CONTROL IS
PORT(
FZ,FC:IN STD_LOGIC;
DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); --IR
Q,T1,T2,T3,T4,CLR:IN STD_LOGIC;
LOAD,LDPC:OUT STD_LOGIC; --PC
LDAR:OUT STD_LOGIC; --AR
LDIR:OUT STD_LOGIC; --IR
LDR0,LDR1,LDR2,LDR3,R0_B,R1_B,R2_B,R3_B:OUT STD_LOGIC; --R0,R1,R2
S1,S0,ALU_B,LDAC,LDDR:OUT STD_LOGIC; --ALU
WR,CS:OUT STD_LOGIC; --范例中WR仅控制数据输出显示
SW_B,LED_B:OUT STD_LOGIC;
LDFR:OUT STD_LOGIC --LS74
);
END MODE_CONTROL;
ARCHITECTURE A OF MODE_CONTROL IS
SIGNAL YIMA:STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL IN1,MOV,CMP,JN,INC,JMP,OUT1:STD_LOGIC;
SIGNAL RD0,RD1,RD2,RD3,RS0,RS1,RS2,RS3:STD_LOGIC;
SIGNAL LDRi,RS_B,RD_B:STD_LOGIC;
SIGNAL M:STD_LOGIC:='0';
BEGIN
P1:PROCESS(CLR,T4) --节拍电位设置
BEGIN
IF(CLR='0')THEN
M<='0';
ELSIF(T4'EVENT AND T4='0')THEN
M<=NOT M;
END IF;
END PROCESS P1;
P2:PROCESS(Q) --对操作码译码
BEGIN
CASE DIN(7 DOWNTO 4)IS
WHEN "1000"=>YIMA<="00000001";
WHEN "1001"=>YIMA<="00000010";
WHEN "1010"=>YIMA<="00000100";
WHEN "1011"=>YIMA<="00001000";
WHEN "1101"=>YIMA<="00010000";
WHEN "1110"=>YIMA<="00100000";
WHEN "1111"=>YIMA<="01000000";
WHEN OTHERS=>YIMA<="00000000";
END CASE;
--以下为控制信号的逻辑表达式
LDAC<=(CMP OR INC)AND T3 AND(NOT Q)AND(NOT M);
LDDR<=CMP AND T4 AND(NOT Q)AND(NOT M);
ALU_B<=NOT(INC AND T4 AND(NOT M));
LOAD<=NOT((JMP AND T4 AND(NOT M))OR(JN AND T4 AND (NOT M)AND(NOT FZ)));
LDPC<=(T1 AND (NOT Q)AND(NOT M))OR((MOV OR JN OR JMP)AND T3 AND (NOT Q)AND(NOT M))OR(JN AND T4 AND
(NOT Q)AND(NOT M)AND(NOT FZ))OR(JMP AND T4 AND(NOT Q)AND(NOT M));
LDIR<=T2 AND (NOT Q)AND(NOT M);
LDFR<=CMP AND T1 AND (NOT Q)AND M;
RS_B<=NOT((CMP OR OUT1)AND T3 AND(NOT M));
RD_B<=NOT((CMP AND T4 AND(NOT M))OR(INC AND T3 AND(NOT M)));
R0_B<=(RS_B OR DIN(3) OR DIN(2))AND(RD_B OR DIN(1)OR DIN(0));
R1_B<=(RS_B OR DIN(3) OR (NOT DIN(2)))AND(RD_B OR DIN(1)OR(NOT DIN(0)));
R2_B<=(RS_B OR (NOT DIN(3))OR DIN(2))AND(RD_B OR(NOT DIN(1))OR DIN(0));
R3_B<=(RS_B OR (NOT DIN(3))OR (NOT DIN(2)))AND(RD_B OR(NOT DIN(1))OR (NOT DIN(0)));
LDRi<=(IN1 AND T3 AND (NOT Q)AND(NOT M))OR(MOV AND T4 AND(NOT Q)AND(NOT M))
OR (INC AND T4 AND (NOT Q)AND (NOT M));
LDR0<=LDRi AND (NOT DIN(1))AND (NOT DIN(0));
LDR1<=LDRi AND(NOT DIN(1))AND DIN(0);
LDR2<=LDRi AND DIN(1) AND (NOT DIN(0));
LDR3<=LDRi AND DIN(1) AND DIN(0);
S1<=INC AND T4 AND (NOT M);
S0<=CMP AND T1 AND M;
CS<=NOT ((T2 AND (NOT M))OR (MOV AND T4 AND (NOT M))OR (JN AND T4 AND (NOT M)AND (NOT FZ))OR
(JMP AND T4 AND (NOT M)));
WR<=NOT (OUT1 AND T3 AND (NOT Q)AND (NOT M));
LDAR<=(T1 OR ((MOV OR JN OR JMP )AND T3))AND (NOT Q)AND (NOT M);
SW_B<=NOT (IN1 AND T3 AND (NOT M));
LED_B<=NOT (OUT1 AND T3 AND (NOT M));
END PROCESS P2;
-------译码信息转换成对应指令助记符
OUT1<=YIMA(6);
JMP<=YIMA(5);
INC<=YIMA(4);
JN<=YIMA(3);
CMP<=YIMA(2);
MOV<=YIMA(1);
IN1<=YIMA(0);
END A;
该ROM在编译生成图元时没错,但是在编译顶层电路图时则出错定位到该程序的:P2:PROCESS(Q) ;此处。

请高手帮我解决,本人不甚感激!
...全文
356 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dllklc 2007-11-24
  • 打赏
  • 举报
回复
貌似在process中并没有用到Q这个信号。。去掉试试吧
ruiruio4 2007-11-09
  • 打赏
  • 举报
回复
程序看的晕,可是我看到P2:PROCESS(Q) 中
CASE DIN(7 DOWNTO 4)IS
WHEN "1000 "= >YIMA <= "00000001 ";
WHEN "1001 "= >YIMA <= "00000010 ";
WHEN "1010 "= >YIMA <= "00000100 ";
WHEN "1011 "= >YIMA <= "00001000 ";
WHEN "1101 "= >YIMA <= "00010000 ";
WHEN "1110 "= >YIMA <= "00100000 ";
WHEN "1111 "= >YIMA <= "01000000 ";
WHEN OTHERS= >YIMA <= "00000000 ";
END CASE;
怎么没有 WHEN "1100 " 的情况呀,而直接跨过到 WHEN "1101 "呢
呵呵,只是门外汉看乱子来着,不知道能不能对你有点帮助。
xuanxing00 2007-06-06
  • 打赏
  • 举报
回复
如果Q没有在进程中作为敏感信号使用就部要把它写在敏感信号表中
feiyun2002gl 2007-05-29
  • 打赏
  • 举报
回复
高手快帮帮忙!
基于VHDL的电子密码锁的设计(1) 基于VHDL的电子密码锁的设计(1)全文共13页,当前为第1页。基于VHDL的电子密码锁的设计(1)全文共13页,当前为第1页。 基于VHDL的电子密码锁的设计(1)全文共13页,当前为第1页。 基于VHDL的电子密码锁的设计(1)全文共13页,当前为第1页。 《EDA仿真与实践实习》 学 院: 信息科学与工程学院 课题名称: 硬件描述语言设计 ——基于VHDL的电子密码锁的设计 班 级: 学 生: 学 号: 指导教师: 基于VHDL的电子密码锁的设计(1)全文共13页,当前为第2页。基于VHDL的电子密码锁的设计(1)全文共13页,当前为第2页。1 引言 基于VHDL的电子密码锁的设计(1)全文共13页,当前为第2页。 基于VHDL的电子密码锁的设计(1)全文共13页,当前为第2页。 在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。 基于EDA技术设计的电子密码锁。以其价格便宜、使用方便、安全性高、成本低、功耗低、易操作等优点,受到了人们的普遍关注。而以可编程逻辑器件(FBDA)为设计载体,以硬件描述语言(VHDL)为主要表达方式,以Quartus 5.1开发软件等为设计工具设计的电子密码锁,由于其能够实现密码输入、密码校验、密码设置和更改等功能,因此,能够满足社会对安全防盗的需求。 本设计的各个模块由相应的VHDL程序具体实现,并在Quartus 5.1环境下进行了整体电路的模拟仿真,最终实现"密码锁控制器设计"的要求。 2 设计内容和要求 2.1 设计内容: 题目:电子密码锁 内容:设计一个4位串行数字锁。 (1)开锁代码为4位二进制,当输入代码的位数与锁内给定的密码一致,且按规定程序开锁时,方可开锁,并点亮一个指示灯。否则进入"错误"状态,并发出报警信号。 (2)锁内的密码可调,且预置方便,保密性好。 (3)串行数字锁的报警由点亮一个灯,直到按下复位开关,报警才停下。此时,数字锁又自动等待下一个开锁状态。 要求: (1)通过查阅相关技术资料,详细描述电子密码锁的基本原理。 (2)编写电子密码锁的Verilog HDL或VHDL程序,并仿真编译下载验证。 基于VHDL的电子密码锁的设计(1)全文共13页,当前为第3页。基于VHDL的电子密码锁的设计(1)全文共13页,当前为第3页。(3)给出完整的系统顶层模块图与波形仿真图。 基于VHDL的电子密码锁的设计(1)全文共13页,当前为第3页。 基于VHDL的电子密码锁的设计(1)全文共13页,当前为第3页。 3 设计分案 密码锁控制器是硬件与软件的结合。根据设计要求,决定以FBDA芯片和VHDL语言设计此电子密码锁。用一片FBDA芯片实现,从而大大简化了系统结构,降低了成本,提高了系统的保密性和可靠性。这种设计不仅简化了系统结构,降低了成本,更提高了系统的可靠性和保密性。另外,采用可编程逻辑器件开发的数字系统,方便地升级和改进。 3.1 系统总框图 本系统的硬件部分主要由密码锁控制电路、密码锁显示电路、LED显示电路、报警电路、密码更改与设置电路组成。整体系统框图如下图2.1所示。 密码锁显示电路密码锁显示电路 密码锁显示电路 密 码 锁 显 示 电 路 报警电路 报 警 电 路 密码锁控制电路 密码锁控制电路 LED显示电路 LED显示电路 密码锁总框图 3.2 密码锁的内部结构及主要功能 3.2.1密码锁的主要功能 密码锁控制器的主要功能有: (1)密码输入:有二个按键来控制(分别代表0和1),每按下一个键,要求在数码管上显示,并依次左移。 (2)密码校验:如果有按键按下,直到松开该按键;红绿灯指示门的状态,也就是密码校验结果,如果密码校验正确,绿亮起,否则如果密码校验错误红灯亮,并凤鸣器响,表明密码错误。 基于VHDL的电子密码锁的设计(1)全文共13页,当前为第4页。基于VHDL的电子密码锁的设计(1)全文共13页,当前为第4页。(3)错误报警:密码输入错误开始报警。 基于VHDL的电子密码锁的设计(1)全文共13页,当前为第4页。 基于VHDL的电子密码锁的设计(1)全文共13页,当前为第4页。 (4)密码修改:输入密码正确后4秒内按按键输入要设置和更改的密码,按按键确认密码设置与更改,则密码设置成功 4 系统硬件电路 4.1 密码锁的显示模块 段数码管是电子开发过程中常用的输出显示设备。在本设计中使用的是8个四位一体、共阴
《EDA仿真与实践实习》 学 院: 信息科学与工程学院 课题名称: 硬件描述语言设计 ——基于VHDL的电子密码锁的设计 班 级: 学 生: 学 号: 指导教师: 1 引言 在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁 的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全 保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥 匙的密码锁应运而生。 基于EDA技术设计的电子密码锁。以其价格便宜、使用方便、安全性高、成本低、功 耗低、易操作等优点,受到了人们的普遍关注。而以可编程逻辑器件(FBDA)为设计载体 ,以硬件描述语言(VHDL)为主要表达方式,以Quartus 5.1开发软件等为设计工具设计的 电子密码锁,由于其能够实现密码输入、密码校验、密码设置和更改等功能,因此,能 够满足社会对安全防盗的需求。 本设计的各个模块由相应的VHDL程序具体实现,并在Quartus 5.1环境下进行了整体 电路的模拟仿真,最终实现"密码锁控制器设计"的要求。 2 设计内容和要求 2.1 设计内容: 题目:电子密码锁 内容:设计一个4位串行数字锁。 (1)开锁代码为4位二进制,当输入代码的位数与锁内给定的密码一致,且按规定程序开 锁时,方可开锁,并点亮一个指示灯。否则进入"错误"状态,并发出报警信号。 (2)锁内的密码可调,且预置方便,保密性好。 (3)串行数字锁的报警由点亮一个灯,直到按下复位开关,报警才停下。此时,数字锁又 自动等待下一个开锁状态。 要求: (1)通过查阅相关技术资料,详细描述电子密码锁的基本原理。 (2)编写电子密码锁的Verilog HDL或VHDL程序,并仿真编译下载验证。 (3)给出完整的系统顶层模块图与波形仿真图。 3 设计分案 密码锁控制器是硬件与软件的结合。根据设计要求,决定以FBDA芯片和VHDL语言设计此 电子密码锁。用一片FBDA芯片实现,从而大大简化了系统结构,降低了成本,提高了系 统的保密性和可靠性。这种设计不仅简化了系统结构,降低了成本,更提高了系统的可 靠性和保密性。另外,采用可编程逻辑器件开发的数字系统,方便地升级和改进。 3.1 系统总框图 本系统的硬件部分主要由密码锁控制电路、密码锁显示电路、LED显示电路、报警电 路、密码更改与设置电路组成。整体系统框图如下图2.1所示。 密码锁总框图 3.2 密码锁的内部结构及主要功能 3.2.1密码锁的主要功能 密码锁控制器的主要功能有: (1)密码输入:有二个按键来控制(分别代表0和1),每按下一个键,要求在数码管 上显示,并依次左移。 (2)密码校验:如果有按键按下,直到松开该按键;红绿灯指示门的状态,也就是密 码校验结果,如果密码校验正确,绿亮起,否则如果密码校验错误红灯亮,并凤鸣器响 ,表明密码错误。 (3)错误报警:密码输入错误开始报警。 (4)密码修改:输入密码正确后4秒内按按键输入要设置和更改的密码,按按键确认 密码设置与更改,则密码设置成功 4 系统硬件电路 4.1 密码锁的显示模块 段数码管是电子开发过程中常用的输出显示设备。在本设计中使用的是8个四位一体 、共阴极型七段数码管。其单个静态数码管如下图所示。 由于七段数码管公共端连接到GND(共阴极型),当数码管的中的一个段被输入高电 平,则相应的这一段被点亮。反之则不亮。共阳极性的数码管与之相反。四位一体的七 段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。八 个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信 号来控制,被选通的数码管显示数据,其余关闭。 4.2 密码锁控制模块 该模块的作用是将输入的密码 (暂时寄存于 ACC中)跟已经存储的密码(REG中的密码信息)进行对比,如果一样,则密码锁开锁。 而在通过密码验证后可以按按键设定密码。在这里值得注意的是有一个密码"0000"为开 始密码,如果改名密码了但是又忘记了密码,重新下载之后的初始密码只要输入的密码 为"0000"则都可通过密码锁。模块lock是整个设计的核心 ,它实现密码锁的逻辑功能。在任何时候按动密码初始化按键内密码设置为程序初始化密 码值(在本模块程序中此值为 "0000"代码为 4 位二进制数 ,当输入代码的位数和位值与锁内给定的密码一致 ,且按规定程序开锁时 ,方可开锁 ,并点亮开锁指示灯(緑灯)亮。否则 ,系统进入 "错误"状态 ,并发出报警信号。串行数字锁的报警方式是点亮指示灯(红灯) ,并使喇叭鸣叫 ,直到按下复位开关 ,报警才停止。此时 ,数字锁又自动进
《EDA仿真与实践实习》 学 院: 信息科学与工程学院 课题名称: 硬件描述语言设计 ——基于VHDL的电子密码锁的设计 班 级: 学 生: 学 号: 指导教师: 1 引言 在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁 的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全 保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥 匙的密码锁应运而生。 基于EDA技术设计的电子密码锁。以其价格便宜、使用方便、安全性高、成本低、功 耗低、易操作等优点,受到了人们的普遍关注。而以可编程逻辑器件(FBDA)为设计载体 ,以硬件描述语言(VHDL)为主要表达方式,以Quartus 5.1开发软件等为设计工具设计的 电子密码锁,由于其能够实现密码输入、密码校验、密码设置和更改等功能,因此,能 够满足社会对安全防盗的需求。 本设计的各个模块由相应的VHDL程序具体实现,并在Quartus 5.1环境下进行了整体 电路的模拟仿真,最终实现"密码锁控制器设计"的要求。 2 设计内容和要求 2.1 设计内容: 题目:电子密码锁 内容:设计一个4位串行数字锁。 (1)开锁代码为4位二进制,当输入代码的位数与锁内给定的密码一致,且按规定程序开 锁时,方可开锁,并点亮一个指示灯。否则进入"错误"状态,并发出报警信号。 (2)锁内的密码可调,且预置方便,保密性好。 (3)串行数字锁的报警由点亮一个灯,直到按下复位开关,报警才停下。此时,数字锁又 自动等待下一个开锁状态。 要求: (1)通过查阅相关技术资料,详细描述电子密码锁的基本原理。 (2)编写电子密码锁的Verilog HDL或VHDL程序,并仿真编译下载验证。 (3)给出完整的系统顶层模块图与波形仿真图。 3 设计分案 密码锁控制器是硬件与软件的结合。根据设计要求,决定以FBDA芯片和VHDL语言设计此 电子密码锁。用一片FBDA芯片实现,从而大大简化了系统结构,降低了成本,提高了系 统的保密性和可靠性。这种设计不仅简化了系统结构,降低了成本,更提高了系统的可 靠性和保密性。另外,采用可编程逻辑器件开发的数字系统,方便地升级和改进。 3.1 系统总框图 本系统的硬件部分主要由密码锁控制电路、密码锁显示电路、LED显示电路、报警电 路、密码更改与设置电路组成。整体系统框图如下图2.1所示。 密码锁总框图 3.2 密码锁的内部结构及主要功能 3.2.1密码锁的主要功能 密码锁控制器的主要功能有: (1)密码输入:有二个按键来控制(分别代表0和1),每按下一个键,要求在数码管 上显示,并依次左移。 (2)密码校验:如果有按键按下,直到松开该按键;红绿灯指示门的状态,也就是密 码校验结果,如果密码校验正确,绿亮起,否则如果密码校验错误红灯亮,并凤鸣器响 ,表明密码错误。 (3)错误报警:密码输入错误开始报警。 (4)密码修改:输入密码正确后4秒内按按键输入要设置和更改的密码,按按键确认 密码设置与更改,则密码设置成功 4 系统硬件电路 4.1 密码锁的显示模块 段数码管是电子开发过程中常用的输出显示设备。在本设计中使用的是8个四位一体 、共阴极型七段数码管。其单个静态数码管如下图所示。 由于七段数码管公共端连接到GND(共阴极型),当数码管的中的一个段被输入高电 平,则相应的这一段被点亮。反之则不亮。共阳极性的数码管与之相反。四位一体的七 段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。八 个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信 号来控制,被选通的数码管显示数据,其余关闭。 4.2 密码锁控制模块 该模块的作用是将输入的密码 (暂时寄存于 ACC中)跟已经存储的密码(REG中的密码信息)进行对比,如果一样,则密码锁开锁。 而在通过密码验证后可以按按键设定密码。在这里值得注意的是有一个密码"0000"为开 始密码,如果改名密码了但是又忘记了密码,重新下载之后的初始密码只要输入的密码 为"0000"则都可通过密码锁。模块lock是整个设计的核心 ,它实现密码锁的逻辑功能。在任何时候按动密码初始化按键内密码设置为程序初始化密 码值(在本模块程序中此值为 "0000"代码为 4 位二进制数 ,当输入代码的位数和位值与锁内给定的密码一致 ,且按规定程序开锁时 ,方可开锁 ,并点亮开锁指示灯(緑灯)亮。否则 ,系统进入 "错误"状态 ,并发出报警信号。串行数字锁的报警方式是点亮指示灯(红灯) ,并使喇叭鸣叫 ,直到按下复位开关 ,报警才停止。此时 ,数字锁又自动进

6,125

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 硬件设计
社区管理员
  • 硬件设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧