关于vhdl 语法元件例化语句port map语法报错的问题

RE_RepairBills.cHouseCode,RE_RepairBills.dCheckTime,RE_RepairBills.cReBillCode, RE_InDepotLog.cGoodsCode, RE_RepairBills.cHouseCode, MT_Goods.cGoodsPN, MT_Goods.cGoodsCName,
CASE RE_RepairBills.cBillType WHEN '' THEN 'DOA新品' WHEN '' THEN '新品' ELSE '新品' END AS shuxing,
SUM(RE_InDepotLog.rAmont) AS 'rAmont', MT_Goods.cGoodsPN AS 'cGoodsPN1', MT_Goods.cGoodsCName AS 'cGoodsCName2',
RE_InDepotLog.cGoodsCode AS 'cGoodsCode2'
RE_RepairBills LEFT OUTER JOIN
RE_InDepotLog ON RE_RepairBills.cReBillCode = RE_InDepotLog.cReBillCode LEFT OUTER JOIN
MT_Goods ON MT_Goods.cGoodsCode = RE_InDepotLog.cGoodsCode
(RE_RepairBills.cBillState = '检测')
AND (RE_InDepotLog.cReGoodsClassCode = '')
and (RE_RepairBills.isread is NULL or RE_RepairBills.isread='0')
and (RE_RepairBills.cHouseCode='')
and (RE_RepairBills.dCheckTime&'' AND RE_RepairBills.dCheckTime&'')
用户页面就两个下拉列表,不存在用户自己输入的地方,都是选的,用户可以进行筛选的就是RE_RepairBills.dCheckTime 和 RE_RepairBills.cHouseCode 也就是日期和库房号。
现在的问题就是输入进去之后,有的数据能查到有的却查不到,大家帮着想想问题可能出现在哪里可能有问题应该就是where里面。。虽然这有些断章取义。。不过还是抱着点希望发上来让大家帮帮忙。------解决方案--------------------
在查询分析器里执行看看
------解决方案--------------------SQL code
and (RE_RepairBills.cHouseCode='')
------解决方案--------------------
RE_RepairBills.cHouseCode,RE_RepairBills.dCheckTime,RE_RepairBills.cReBillCode, RE_InDepotLog.cGoodsCode, RE_RepairBills.cHouseCode, MT_Goods.cGoodsPN, MT_Goods.cGoodsCName,
CASE RE_RepairBills.cBillType WHEN '' THEN 'DOA新品' WHEN '' THEN '新品' ELSE '新品' END AS shuxing,
SUM(RE_InDepotLog.rAmont) AS 'rAmont', MT_Goods.cGoodsPN AS 'cGoodsPN1', MT_Goods.cGoodsCName AS 'cGoodsCName2',
RE_InDepotLog.cGoodsCode AS 'cGoodsCode2'
RE_RepairBills LEFT OUTER JOIN
RE_InDepotLog ON RE_RepairBills.cReBillCode = RE_InDepotLog.cReBillCode LEFT OUTER JOIN
MT_Goods ON MT_Goods.cGoodsCode = RE_InDepotLog.cGoodsCode
(RE_RepairBills.cBillState = '检测')
AND (RE_InDepotLog.cReGoodsClassCode = '')
and (RE_RepairBills.isread is NULL or RE_RepairBills.isread='0')
and (RE_RepairBills.cHouseCode='')
and (RE_RepairBills.dCheckTime&'' AND RE_RepairBills.dCheckTime&'')
如果您喜欢IT行业或者对IT行业感兴趣,想开拓技术视野,欢迎加入本站官方QQ群:,在群里认识新朋友和交流技术^_^
本站联系邮箱:VHDL语言的基本结构
一、实体:说明主要描述的是一个设计单元的外部特征,即对外的输入/输出接口及一些用于结构体的参数定义。
规则一:建议将VHDL的标识符或基本语句关键词,以大写方式表示;而又设计者添加的内容有小写字母表示。
1、GENERIC类属说明语句
作用:是操作者很容易的改变一个设计实体或一个元件的内部电路的结构和规模。
结构:引到一个类属参量表,在表中提供时间参数及总线宽度等内部信息。
2、PORT端口说明
常用的端口类别:
IN(输入): 仅允许数据流进入端口&用于&时钟输入、控制输入、单项数据输入。
OUT(输出):& 仅允许数据流流出端口&用于终端计数一类的输出,不能用于反馈。
BUFFER(缓冲):主要用于内部的反馈
INOUT(双向): 也可以用于内部的反馈
二、结构体
用来描述设计的内部结构和逻辑功能。
ARCHITECTURE&J结构体名&OF&实体名&&IS
[结构体说明部分]
&并行处理语句&
END&&[ARCHTECTURE&结构体名&];
其中ARCHITECTURE、BEGIN、END&&等称为保留字
结构体说明部分:用于对结构体需要使用的信号、常数、数据类型和函数进行定义和说明。
功能描述语句:&&描述了结构体的主要功能。
功能:把特定的结构体关联到一个确定的实体,是为较大的系统设计提供管理和工程组织服务的。在仿真一个实体时可以利用配置进行不同结构体的对比试验。
基本结构:
CONFIGURATION&配置名&OF&实体名&IS
FOR&选配结构体名
END:配置名;
定义:用于存放定义好的数据单元、子程序等设计单元的集合。
1、VHDL的5种库
WORK库:用于存放设计者描述的VHDL语句。
用户定义库:将自己使用的包集合和实体等汇集在一起,定义成的一个库。
上述5种库中,除了STD库和WORK库外,其他库均属于资源库使用的时候都需要进行说明。
说明的方法:
LIBRARY&库名;&&--说明使用什么库
USE&&&包集合名;&--说明使用库中哪一个包集合及包集合中的项目等。
2、VHDL程序包
功能:主要用来存放各个设计实体能共享的数据类型、子程序说明、属性说明和元件说明等部分。
程序包有两个部分构成:
程序包首:对数据类型、子程序、常量、元件、属性和属性指定等进行说明。
程序包体:由包首指定的过程和函数的程序体组成,用来规定程序包的实际功能。
使用这个程序包的所有定义,可用USE语句访问此程序包
LIBRARY&WORK;
USE&WORK.PAC1.ALL&&&&&---访问程序包
3、常用的预定义的程序包
VHDL语言要素
即编程语句的基本单元
一、VHDL语法规则
这里主要介绍其特有的语法规则
1、数学表示
整数:都是十进制的数&&5,678,0,156E2(=15600),45_234_287(=)&&&下划线只是为了提高数字的可读性,并没有其他影响。
实数:都是十进制的数&,但是必须有小数点。
以数值基数表示的数字:&&&& 10#170# --(十进制数表示,等于170)
2## --(二进制数表示,等于254)
注:上面省略了最后一位,用于表示十进制数表示的指数部分当为0时,可以进行省略
注:实数一般不可综合实现,物理量(带有单位的)一般不可综合实现
2、字符串型文字
字符放在单引号中&字符串放在双引号中。
3、数位字符串
用来定义常数、端口、变量、信号、子程序、或参数的名字。规则通C语言。
即表示数组中的某一个数。
二、VHDL数据对象
有三种:常量(constant)、变量(VARIBLE)和信号(SIGNAL)
前两者对应传统的机器语言,信号具有更多的硬件特征
1、常量(CONSTANT)
一般用来代表数字电路中的电源、地、恒等逻辑值等常数。
常量的使用范围取决于它被定义的位置。即在程序包中定义可在整个程序包中使用,在实体中定义,有效范围为这个实体定义的所有结构体;定义在结构体中只能用于该结构体;定义在结构体中某一单元如一个进程则只能用在这个进程当中。
常用在实现某些算法的赋值语句当中,只是个局部变量,只能在进程和子程序中使用。(是一种理想化的数据传输,不存在任何的延时行为)
表示一条硬件连接线:如输入输出端口,描述硬件系统的基本数据对象。
4、三者的比较
三、数据类型
1、标注数据类型
(1)、Integer(整形),取值范围-(2^31-1)~(2^31-1)
(2)、Real,取值范围-1.0E+38~+1.0E+38,综合工具常常不支持
(3)、Bit(位),只取0或1,描述信号取值
(4)、Bit_Vector(位矢量),每位只取两个值
(5)、Boolean(布尔量),TRUE和FALSE
(6)、Character(字符)
(7)、String
(8)、Time
(9)、Natural(自然数)和Positive(正整数)&&0~(2^31-1)
(10)、Severity&Level(错误等级):Note,Warning,Error,Failure。
2、标准逻辑类型
(1)STD_LOGIC类型
&U&&&初始值
&X&&&不定态
&0&&&强制0
&1&&&强制1
&Z&&&高阻态
&W&&&弱信号不定态
&L&&&弱信号0
&H&&&弱信号1
&_&&&不可能情况(可忽略值)
(2)STD_LOGIC_VECTOR
3、用户自定义数据类型
(1)、枚举(Enumerated)
TYPE&STD_LOGIC&IS&(U,X,0,1,Z,W,L,H,_);
(2)数组(ARRAY)&
TYPE&数据类型名IS&ARRAY&(范围)&OF&元素类型名;
(3)子类型(SYBTYPE)&用来定义含有限制条件的数据类型
SYBTYPE&类型名&IS&数据类型名【约束范围】
4、数据类型的转换
三、操作符
(1)、&并置操作符&前后的数组长度应该一致
(2)、**乘方&左边可以是整数或浮点数&但右边一定是整数
(3)、操作符能够产生逻辑电路,但就效率而言使用常数或简单的一位数据类型能够产生较为紧凑的电路。
一、赋值语句
变量赋值 变量名:=表达式
信号赋值 信号名&=信号变量表达式
二、IF语句
三、CASE语句
四、LOOP语句
1、FOR&LOOP循环&用于规定重复次数的情况
[标号]:&FOR&循环变量&IN&离散范围&LOOP
顺序处理语句;
2、WHILE&&LOOP循环
[标号]:WHILE&循环条件&LOOP
&&&&&顺序处理语句;
END&&LOOP&&&[标号]&;
五、跳出循环语句
NEXT&&&[循环标号]&&&[WHEN&条件];
&&&&&&&有条件或者无条件的结束当前循环开始下一次循环
EXIT&&& [标号]& [WHEN&条件];
当条件为真时跳出LOOP至程序标号处。如果后面什么都没有,则无条件的跳出,继续执行后继语句。
六、RETRUN语句
只能用在函数和过程当中,用来结束当前最内层的函数或过程体的执行。
RETURN&表达式;&&&&&--只能用在函数体中,必须返回一个值
RETURN&; ---只能用在过程体中。
七、NULL语句
常用在CASE语句中&OTHERS的后面,即其他的情况什么都不做。
特点:在结构体中的执行时同步执行的。并发语句之间可以可以有信息往来,也可以是相互独立、互不相关、异步执行的(如多时钟情况)。
一、并行信号赋值语句
1、并发信号赋值语句
实际上是一个进程的缩写,当信号赋值符号&&=&右边的信号发生任何变化时,该信号赋值语句就执行一次。
这里tmp3就相当于进程括号中的敏感信号。当期发生变化时就开始执行该语句。
2、条件信号赋值
根据不同的条件,将不同的值赋给信号
信号名&=表达式1&WHEN&条件&ELSE
表达式2&WHEN&条件&ELSE
表达式3&WHEN&条件&ELSE
表达式4&WHEN&条件&ELSE
。。。。。。。。。
3、选择信号赋值
WITH&&条件表达式&SELECT
目标信号&=表达式1&&WHEN&选择条件1,
表达式2&WHEN&选择条件2,
表达式3&WHEN&选择条件3,
表达式4&WHEN&选择条件4,
。。。。。。。。。。。;
二、进程(PROCESS)语句
特点:(1)一个结构体中的多个进程可以并发的执行,并可存取结构体或实体所定义的信号。
(2)进程中所有语句都是顺序执行的
(3)必须包含一个显示的敏感信号表或者一个WAIT语句。
(4)进程之间的通信是通过信号量传递实现。
[进程标号:]&&&PROCESS&&&&[(敏感信号参数表)]
[进程说明部分]
顺序描述语句
END&PROCESS&[进程标号];
进程说明部分用于定义该进程所需要的变量、数据类型、属性、子程序等,但不能定义信号及共享变量&
进程的激活必须有敏感信号的变化或者相应的WAIT语句
WAIT;&&&&&&&&&&&&&&&&&&&&&&&&&永远挂起,无限等待
WAIT&ON&敏感信号表; &&&&一旦变化,进程启动
WAIT&UNTIL&条件表达式; &&&&条件等待
WAIT&FOR&时间表达式; &&&&
与进程的区别:进程可以从本结构体的其他模块或进程结构体中,直接读取信号或者向信号赋值而子程序不行。
特点:1、一般在程序包中调用,这样可以在几个不同的设计来调用(可在结构体、进程、及程序包中调用)
2、可重载,几个同名,但返回值类型不同
3、过程可返回多个值,而函数只能返回一个值。
4、函数所有参数为输入参数,过程有输入参数、输出参数、还有双向参数。
包括过程首和过程体两部分:&&首定义过程接口,体描述具体算法。
PROCEDURE&&过程名&
(参数名[,参数名。。。]:[端口模式]数据类型;
&&参数名[,参数名。。。]:[端口模式]数据类型;
。。。。。。。。。) &&定义过程首
PROCEDURE&过程名&
(参数名[,参数名。。。]:[端口模式]数据类型;
&&参数名[,参数名。。。]:[端口模式]数据类型;
。。。。。。。。。)&IS
[过程说明部分;]
&过程语句部分&;
END&[PROCEDURE]&&过程名&; &&定义过程体
在程序包中定义一定要有函数首,在进程或结构体中定义不必定义函数首
FUCTION&函数名&输入参数表&RETURN&数据类型; &&函数首
FUCTION&函数名&输入参数表&RETURN&数据类型&IS&&&&&&&函数体
[说明语句];
顺序语句;
RETURN [返回变量名]; &&函数返回值
END&FUCTION&函数名;
注:函数参数的数据类型只能包。括常量和信号,参数端口模式只能是IN&,因此参数的端口模式可以省略。
VHDL语言描述风格
VHDL的结构体具有描述整个设计实体的逻辑功能
对于所想要实现的电路可以有不同的语句表达式,这种不同的描述方式或者说建模方法,成为描述风格
一、行为描述
只描述了所希望的硬件电路的功能,没有直接指明或者描述这些行为的电路结构。
这种方法是VHDL语言的核心是区别于RTL级硬件语言的Verilog&的根本区别。
特点:大量使用算术运算、关系运算、惯性延时、传输延时等VHDL语句。
二、数据流描述
也称为寄存器传输(RTL)描述方式。
特点:主要使用AND&OR等。
三、结构化描述
描述建模步骤:
(1)原件说明,用于说明原件的调用,并描述该元件的接口
(2)原件例化,指定原件的安放位置,并确定与其他元件放置的连线关系
(3)原件配置,指定原件所用的设计实体
1、原件描述语句: COMPONENT&
GENERIC&用于该元件的可变参数的代入或赋值。
2、结构例化语句
该语句将现成的元件端口号映射成高层次设计电路中的信号。
Instance_name&:&component_name
Component_port=&&connect_port,
_component_port=&connect_port
3、编写结构描述程序的主要步骤
(1)绘制框图
(2)原件说明
(3)信号说明
(4)元件例化
(5)添加必要的框架。
有限状态机电路设计
状态机是按照预先设定的状态顺序一次运行的,是纯硬件的顺序控制电路
一、有限状态机概述组合
有限状态机是指输出取决于输入信号和当前所处状态的时序逻辑电路
有限状态机可以认为是组合逻辑和寄存器逻辑的一种组合。其中,寄存器逻辑的功能是存储有限状态机的的内部状态;而组很逻辑又可分为次态逻辑和输出逻辑两部分,次态逻辑的功能是确定有限状态机的下一个状态,输出逻辑的功能是确定有限状态机的输出。
Moore型:输出仅与当前状态有关
Mealy型:输出与当前状态和输入信号均有关系。
二、VHDL描述模式
1、实体部分
输入、输出端口
2、说明部分
就是两句话
3、状态转换进程
根据外部输入的控制信号和当前状态的状态值确定下一状态的去向
4、时序控制进程
说明状态何时转换的进程
5、辅助进程
旗下网站:
与非门科技(北京)有限公司 All Rights Reserved.
京ICP证:070212号
北京市公安局备案编号: 京ICP备:号VHDL&元件例化语句
鉴于元件例化可能出现种种问题,在此说说。
引用的东西要在同一个project里的其他文件里有定义才行。
这是引用一位全加器构成一个四位全加器。
project名是adder,里面两个vhd文件,分别为fulladder.vhd和adder.vhd
fulladder.vhd内容如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY FullAdder
is&& --这是一位全加器
& A:in std_
& B:in std_
& C:in std_
& Carry:out std_
& Sum:out std_logic
architecture a of FullAdder is
&Sum&=A xor B xor
&Carry&=(A and B)
or (A and C) or (B and C);
adder.vhd内容如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
entity adder is& --四位全加器
& A,B:in std_logic_vector(3 downto
& S:out std_logic_vector(3 downto
& C:inout std_logic_vector(4
architecture a of adder is
component FullAdder&
--声明component
& A:in std_
& B:in std_
& C:in std_
& Carry:out std_
& Sum:out std_logic
&u1:FullAdder port
map(A(0),B(0),C(0),C(1),S(0));
--引用component,u1,u2,u3,u4为映像的标识名,port
map是关键字,端口按对应顺序写
&u2:FullAdder port
map(A(1),B(1),C(1),C(2),S(1));
&u3:FullAdder port
map(A(2),B(2),C(2),C(3),S(2));
&u4:FullAdder port
map(A(3),B(3),C(3),C(4),S(3));
&C(0)&='0';
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。硬件描述语言VHDL_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
硬件描述语言VHDL
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:436.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
下载积分:30
内容提示:
文档格式:PDF|
浏览次数:19|
上传日期: 15:33:57|
文档星级:
该用户还上传了这些文档
vhdl语法.PDF
官方公共微信

我要回帖

更多关于 vhdl 语法 的文章

 

随机推荐