精华内容
下载资源
问答
  • C51扩充数据类型

    千次阅读 2019-12-19 13:43:04
    C51扩充数据类型 单片机内部有很多特殊功能寄存器(Special Function Register),每个寄存器在单片机内部都分配有唯一的地址,一般会根据寄存器功能的不同给寄存器赋予不同的名称。当需要在程序中操作这些特殊功能...

    C51扩充数据类型

    单片机内部有很多特殊功能寄存器(Special Function Register),每个寄存器在单片机内部都分配有唯一的地址,一般会根据寄存器功能的不同给寄存器赋予不同的名称。当需要在程序中操作这些特殊功能寄存器时,必须在程序的最前面对这些名称加以声明,也就是将这个寄存器的地址编号赋给这个名称,这样编译器在以后的程序中才能找到这些名称所对应的寄存器。跟51单片机特殊功能寄存器相关的数据类型是C51的扩充数据类型,如表1.5.2所示。

    表1.5.2 C51扩充数据类型

    数据类型

    长度

    值域

    bit

    0或1

    sfr

    单字节

    0-255

    sfr16

    双字节

    0-65535

    sbit

    0或1

    C51扩充数据类型介绍如下:

    (1)bit类型

    即位变量类型,C51编译器的一种扩充数据类型。利用它可定义位变量,但不能定义位指针,也不能定义位数组。它的值是一个二进制位,不是0就是1,类似一些高级语言中的Boolean类型中的True和False。

    (2)sfr类型

    即特殊功能寄存器类型,也是一种扩充数据类型。sfr类型点用一个内存单元,值域为0~255。利用它可以访问51单片机内部的所有特殊功能寄存器。例如用sfr P1=0x90这一句定“P1”为P1端口在片内的寄存器,在后面的语句中我们可以用P1=0xff(对P1端口的所有引脚置高电平)之类的语句来操作特殊功能寄存器。

    (3)sfr16类型

    即16位特殊功能寄存器类型,占用两个内存单元,值域为0~65535。sfr16和sfr一样用于操作特殊功能寄存器,所不同的是它用于操作占两个字节的寄存器,比如52子系列单片机的扩展定时器T2。

    (4)sbit类型

    即可寻址位类型,利用它可以访问芯片内部的RAM中的可寻址位或特殊功能寄存器中的可寻址位。注意:51单片机内部RAM中只有十六进制地址尾数为0或8的存储单元或特殊功能寄存器才能进行位寻址。

    如先前定义了:

    sfr P1=0x90;      //因P1端口的寄存器是可位寻址的,地址尾数为0

    所以可以定义:

    sbit P11=P1^1;    //P11为P1中的P1.1引脚

    同样可以用P1.1引脚的地址去写:

    sbit P11=0x91;     //P1.1引脚地址为0x91

    这样我们在以后的程序语句中就可以用P11来对单片机P1.1引脚进行读写操作了。

    上述这些声明大部分已经包含在单片机的特殊功能寄存器声明头文件“reg51.h”中了,故而一般不需要去修改。只有在该头文件中没有时,才需要按照上述格式进行定义,然后才能在程序中使用。

    展开全文
  • 交换机端口类型

    千次阅读 2013-08-02 13:22:29
    其两者的重要区别就是低端的交换机,每一个物理端口为一个逻辑端口,而高端交换机则是将多个物理端口捆绑成一个逻辑端口再进行的配置的。 cisco网络中,交换机在局域网中最终稳定状态的接口类型主要有四种:...

    首先,将交换机的类型进行划分,交换机分为低端(SOHO级)和高端(企业级)。
    其两者的重要区别就是低端的交换机,每一个物理端口为一个逻辑端口,而高端交换机则是将多个物理端口捆绑成一个逻辑端口再进行的配置的。

    cisco网络中,交换机在局域网中最终稳定状态的接口类型主要有四种:access/ trunk/ multi/ dot1q-tunnel。

    1、access: 主要用来接入终端设备,如PC机、服务器、打印服务器等。
    2、trunk: 主要用在连接其它交换机,以便在线路上承载多个vlan。
    3、multi: 在一个线路中承载多个vlan,但不像trunk,它不对承载的数据打标签。主要用于接入支持多vlan的服务器或者一些网络分析设备。现在基本不使用此类接口,在cisco的网络设备中,也基本不支持此类接口了。
    4、dot1q-tunnel: 用在Q-in-Q隧道配置中。

    Cisco网络设备支持动态协商端口的工作状态,这为网络设备的实施提供了一定的方便(但不建议使用动态方式)。cisco动态协商协议从最初的DISL(Cisco私有协议)发展到DTP(公有协议)。根据动态协议的实现方式,Cisco网络设备接口主要分为下面几种模式:
    1、switchport mode access:  强制接口成为access接口,并且可以与对方主动进行协商,诱使对方成为access模式。
    2、switchport mode dynamic desirable:  主动与对协商成为Trunk接口的可能性,如果邻居接口模式为Trunk/desirable/auto之一,则接口将变成trunk接口工作。如果不能形成trunk模式,则工作在access模式。这种模式是现在交换机的默认模式。
    3、switchport mode dynamic auto:  只有邻居交换机主动与自己协商时才会变成Trunk接口,所以它是一种被动模式,当邻居接口为Trunk/desirable之一时,才会成为Trunk。如果不能形成trunk模式,则工作在access模式。
    4、switchport mode trunk:  强制接口成为Trunk接口,并且主动诱使对方成为Trunk模式,所以当邻居交换机接口为trunk/desirable/auto时会成为Trunk接口。
    5、switchport nonegotiate:  严格的说,这不算是种接口模式,它的作用只是阻止交换机接口发出DTP数据包,它必须与switchport mode trunk或者switchport mode access一起使用。
    6、switchport mode dot1q-tunnel: 配置交换机接口为隧道接口(非Trunk),以便与用户交换机的Trunk接口形成不对称链路。



    什么是链路类型?
    vlan的链路类型可以分为接入链路和干道链路。
    (1)接入链路(access link)指的交换机到用户设备的链路,即是接入到户,可以理解为由交换机向用户的链路。由于大多数电脑不能发送带vlan tag的帧,所以这段链路可以理解为不带vlan tag的链路。
      (2)  干道链路(trunk link)指的交换机到上层设备如路由器的链路,可以理解为向广域网走的链路。这段链路由于要靠vlan来区分用户或者服务,所以一般都带有vlan tag。


    什么是端口类型?
    端口类型在以前主要分为两种,基本上用的也是access和trunk这两种端口。
    (1)access端口:它是交换机上用来连接用户电脑的一种端口,只用于接入链路。例如:当一个端口属于vlan 10时,那么带着vlan 10的数据帧会被发送到交换机这个端口上,当这个数据帧通过这个端口时,vlan 10 tag 将会被剥掉,到达用户电脑时,就是一个以太网的帧。而当用户电脑发送一个以太网的帧时,通过这个端口向上走,那么这个端口就会给这个帧加上一个vlan 10 tag。而其他vlan tag的帧则不能从这个端口上下发到电脑上。
    (2)trunk端口:这个端口是交换机之间或者交换机和上层设备之间的通信端口,用于干道链路。一个trunk端口可以拥有一个主vlan和多个副vlan,这个概念可以举个例子来理解:例如:当一个trunk端口有主vlan 10 和多个副vlan11、12、30时,带有vlan 30的数据帧可以通过这个端口,通过时vlan 30不被剥掉;当带有vlan 10的数据帧通过这个端口时也可以通过。如果一个不带vlan 的数据帧通过,那么将会被这个端口打上vlan 10 tag。这种端口的存在就是为了多个vlan的跨越交换机进行传递。
    也可以看出,这两种链路方式恰好对应两种端口方式,理解起来也不算困难。原理理解了,当看到交换机时,配置几遍就完全明白了。

    access和truck 主要是区分VLAN中交换机的端口类型
    truck端口为与其它交换机端口相连的VLAN汇聚口,access端口为交换机与VLAN域中主机相连的端口
    trunk一般是打tag标记的,一般只允许打了该tag标记的vlan 通过,所以该端口可以允许多个打tag标记的vlan 通过,而access端口一般是untag不打标记的端口,而且一个access vlan端口只允许一个access vlan通过.
    access,trunk,hybid是三种端口属性;
    具有access性质的端口只能属于一个vlan,且该端口不打tag;
    具有trunk性质的端口可以属于多个vlan,且该端口都是打tag的;
    具有hybid性质的端口可以属于多个vlan,至于该端口在vlan中是否打tag由用户根据具体情况而定;

    交换机三种端口模式Access、Hybrid和Trunk的理解
    端口有三种模式:access,hybrid,trunk。access性质的端口只能属于一个vlan,且该端口不打tag,trunk可以属于多个vlan,可以接收和发送多个vlan的报文,一般用于交换机之间的连接;hybrid也可以属于多个vlan,可以接收和发送多个vlan的报文,可以用于交换机之间的连接也可以用于交换机和用户计算机之间的连接。trunk和hybrid的区别主要是,hybrid端口可以允许多个vlan的报文不打标签,而 trunk端口只允许缺省vlan的报文不打标签,同一个交换机上不能hybrid和trunk并存。
    Tag,untag以及交换机的各种端口模式是网络工程技术人员调试交换机时接触最多的概念了,然而笔者发现在实际工作中技术人员往往对这些概念似懂非懂,笔者根据自己的理解再结合一个案例,试图向大家阐明这些概念untag就是普通的ethernet报文,普通PC机的网卡是可以识别这样的报文进行通讯;
    tag报文结构的变化是在源mac地址和目的mac地址之后,加上了4bytes的vlan信息,也就是vlan tag头;一般来说这样的报文普通PC机的网卡是不能识别的
    带802.1Q的帧是在标准以太网帧上插入了4个字节的标识。其中包含:
    2个字节的协议标识符(TPID),当前置0x8100的固定值,表明该帧带有802.1Q的标记信息。
    2个字节的标记控制信息(TCI),包含了三个域。
    Priority域,占3bits,表示报文的优先级,取值0到7,7为最高优先级,0为最低优先级。该域被802.1p采用。
    规范格式指示符(CFI)域,占1bit,0表示规范格式,应用于以太网;1表示非规范格式,应用于Token Ring。
    VLAN ID域,占12bit,用于标示VLAN的归属。


    以太网端口有三种链路类型:Access、Hybrid和Trunk。
    Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口;
    Trunk类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口;
    Hybrid类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。
    Hybrid端口和Trunk端口在接收数据时,处理方法是一样的,唯一不同之处在于发送数据时:Hybrid端口可以允许多个VLAN的报文发送时不打标签,而Trunk端口只允许缺省VLAN的报文发送时不打标签。
    在这里先要向大家阐明端口的缺省VLAN这个概念
    Access端口只属于1个VLAN,所以它的缺省VLAN就是它所在的VLAN,不用设置;
    Hybrid端口和Trunk端口属于多个VLAN,所以需要设置缺省VLAN ID。缺省情况下,Hybrid端口和Trunk端口的缺省VLAN为VLAN 1
    如果设置了端口的缺省VLAN ID,当端口接收到不带VLAN Tag的报文后,则将报文转发到属于缺省VLAN的端口;当端口发送带有VLAN Tag的报文时,如果该报文的VLAN ID与端口缺省的VLAN ID相同,则系统将去掉报文的VLAN Tag,然后再发送该报文。
    注:对于华为交换机缺省VLAN被称为“Pvid Vlan”, 对于思科交换机缺省VLAN被称为“Native Vlan”

    交换机接口出入数据处理过程如下:
    Acess端口收报文:
    收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则直接丢弃(缺省)
    Acess端口发报文:
    将报文的VLAN信息剥离,直接发送出去 
    trunk端口收报文:
    收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有判断该trunk端口是否允许该 VLAN的数据进入:如果可以则转发,否则丢弃
    trunk端口发报文:
    比较端口的PVID和将要发送报文的VLAN信息,如果两者相等则剥离VLAN信息,再发送,如果不相等则直接发送
    hybrid端口收报文:
    收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则判断该hybrid端口是否允许该VLAN的数据进入:如果可以则转发,否则丢弃(此时端口上的untag配置是不用考虑的,untag配置只对发送报文时起作用)
    hybrid端口发报文:
    1、判断该VLAN在本端口的属性(disp interface 即可看到该端口对哪些VLAN是untag, 哪些VLAN是tag)
    2、如果是untag则剥离VLAN信息,再发送,如果是tag则直接发送

    以下案例可以帮助大家深入理解华为交换机的hybrid端口模式:
            [Switch-Ethernet0/1]int e0/1
            [Switch-Ethernet0/1]port link-type hybrid
            [Switch-Ethernet0/1]port hybrid pvid vlan 10
            [Switch-Ethernet0/1]port hybrid vlan 10 20 untagged
            [Switch-Ethernet0/1] int e0/2
            [Switch-Ethernet0/2]port link-type hybrid
            [Switch-Ethernet0/2]port hybrid pvid vlan 20
            [Switch-Ethernet0/2]port hybrid vlan 10 20 untagged
          此时inter e0/1和inter e0/2下的所接的PC是可以互通的,但互通时数据所走的往返vlan是不同的。
          以下以inter e0/1下的所接的pc1访问inter e0/2下的所接的pc2为例进行说明
          pc1所发出的数据,由inter0/1所在的pvid vlan10封装vlan10的标记后送入交换机,交换机发现inter e0/2允许vlan 
          10的数据通过,于是数据被转发到inter e0/2上,由于inter e0/2上vlan 
          10是untagged的,于是交换机此时去除数据包上vlan10的标记,以普通包的形式发给pc2,此时pc1->p2走的是vlan10
          再来分析pc2给pc1回包的过程,pc2所发出的数据,由inter0/2所在的pvid 
          vlan20封装vlan20的标记后送入交换机,交换机发现inter e0/1允许vlan 20的数据通过,于是数据被转发到inter 
          e0/1上,由于inter e0/1上vlan 
          20是untagged的,于是交换机此时去除数据包上vlan20的标记,以普通包的形式发给pc1,此时pc2->pc1走的是vlan20

    Cisco 交换机 设备 access、trunk、hybrid 端口的处理流程
    为交换机设备上access、trunk、hybrid端口的处理流程:注:数据帧在交换机内部处理时,均带有vlan tag。
       a)access端口
         发送(从交换机内部往外发送):
             带有vlan tag:删除tag后,发送
             不带vlan tag:不可能出现
         接收:
              带有vlan tag:若该tag等于该access端口的pvid,则可以接收,进入交换机内部       
              不带vlan tag:添加该access端口的pvid,进入交换机内部             
       b)trunk端口(允许发送native VLAN数据的时候,可以不加tag)
          发送(从交换机内部往外发送):
                带有vlan tag:若tag等于该trunk端口的pvid,则删除tag后发送;否则保留tag直接发送
                不带vlan tag:不可能出现
          接收:
               带有vlan tag:保留该tag,进入交换机内部
               不带vlan tag:添加该trunk端口的pvid,进入交换机内部       
     c)hybrid端口(允许发送多个VLAN数据的时候,可以不加tag)
          发送(从交换机内部往外发送):
             带有vlan tag:是否带tag进行发送,取决于用户配置(用户可以配置tagged list,untagged list)
              不带vlan tag:不可能出现
          接收:
              带有vlan tag:保留该tag,进入交换机内部
              不带vlan tag:添加该hybrid端口的pvid,进入交换机内部

    在设备上允许trunk和hybrid端口同时存在,但是不能将hybrid端口直接改为trunk端口(hybrid--》access---》trunk),反之亦然(早期是这样,现在不知道改没改)。id端口可以允许多个vlan的数据不带tag,而802.1q的trunk只能是native vlan(即pvid)对应的vlan的数据不带tag,应该说hybrid可以实现trunk端口的特性。实际使用时都可以用hybrid端口,而不用trunk。

    展开全文
  • 交换机 VLAN 端口类型

    千次阅读 2017-12-04 21:21:52
    交换机的VLAN端口可以分为Access、Trunk和Hybrid 3中类型。Access端口是交换机上用来直接连接用户终端的接口,它只允许属于该端口的缺省VLAN的帧通过。Access端口是交换机上用来直接连接用户终端的端口,它只允许...

    交换机的VLAN端口可以分为Access、Trunk和Hybrid 3中类型。Access端口是交换机上用来直接连接用户终端的端口,它只允许属于该端口的缺省VLAN的帧通过;Access端口发往用户终端的帧一定不带VLAN标签。Trunk端口是交换机上用来连接其他交换机的端口,他可以允许属于多个VLAN的帧通过。Hybrid端口是交换机上既可以连接用户终端,又可以连接其他交换机的端口。Hybrid端口也可以允许属于多个VLAN的帧通过,并且可以在出端口的方向上将某些VLAN帧的标签剥掉。

    对于没有配置PVID的 untagged hybrid 端口,即使配置了port hybrid untagged vlan 10 30 其所配置允许通过的vlan为(10 30) 。vlan 1 即使不在允许的列表中也默认允许通过(端口默认pvid 为vlan 1),可以与同一交换机上默认属于VLAN 1的主机通信,故untagged hybrid 端口必须配置PVID(接终端设备配置untag hybrid ,必须配置PVID ,否则 配置的untagged vlan 10 30 会不起作用,按照默认的vlan 1 继续转发)。

    交换机每个VLAN下都有所属终端的Mac。

    在一个广播域内,任何两台终端计算机之间都可以进行二层(数据链路层)通信。所谓二层通信,是指通信双方是以直接交换帧的方式来传递信息的,也即是,目的计算机所接收到的帧与源计算机发出的帧都是一模一样的,帧的目的MAC地址、源MAC地址、类型值、载荷数据、CRC等内容都没有发生任何改变。二层通信一定不会经过路由器(或具有三层功能的交换机)进行三层转发。

    源计算机在向目的计算机传递信息时,如果源计算机发出的帧经过了路由器(或三层交换机)的转发,那么目的计算机接收的帧一定不再是源计算机发出的那个帧。至少目的MAC和源MAC地址一定不同。
    示例:
    本实用模拟了一个简单的公司网络场景,SW1和SW2尾楼层交换机,PC1和PC3属于公司的部门A,PC2和PC4属于公司的部门B,PC5属于部门A和B的上级部门C。在网络规划中,部门A属于VLAN 10 ,部门B属于VLAN 20 ,部门C属于VLAN30。公司希望通过VLAN划分和配置,使各个部门内部之间可以互相通信,部门A和部门B均能够与部门C进行通信,但是部门A与部门B间不能相互通信。
    拓扑如下:
    拓扑如下:
    这里写图片描述
    hybrid端口类型可以允许不同VLAN的终端通信。

    188 5699 2079
    LSW1:
    interface GigabitEthernet0/0/1
    port hybrid pvid vlan 10
    port hybrid untagged vlan 10 30

    interface GigabitEthernet0/0/2
    port hybrid pvid vlan 20
    port hybrid untagged vlan 20 30

    interface GigabitEthernet0/0/24
    port link-type trunk
    port trunk allow-pass vlan 10 20 30

    LSW2:
    interface GigabitEthernet0/0/1
    port hybrid pvid vlan 10
    port hybrid untagged vlan 10 30

    interface GigabitEthernet0/0/2
    port hybrid pvid vlan 20
    port hybrid untagged vlan 20 30

    interface GigabitEthernet0/0/3
    port hybrid pvid vlan 30
    port hybrid untagged vlan 10 20 30

    interface GigabitEthernet0/0/24
    port link-type trunk
    port trunk allow-pass vlan 10 20 30

    展开全文
  • VHDL数据类型 &自定义数据类型

    万次阅读 2014-06-09 11:26:24
    VHDL数据类型   VHDL是一种强数据类型语言。   要求设计实体中的每一个常数、信号、变量、 函数以及设定的各种参量都必须具有确定的数据类 型,并且相同数据类型的量才能互相传递和作用。   VHDL数据...

    VHDL数据类型

          VHDL是一种强数据类型语言。

         要求设计实体的每一个常数、信号、变量、

    函数以及设定的各种参量都必须具有确定的数据类

    型,并且相同数据类型的量才能互相传递和作用。

         VHDL数据类型分为四大类:

            ? 标量类型(SCALAR TYPE);

            ? 复合类型(COMPOSITE TYPE);

            ? 存取类型(ACCESS TYPE);

            ? 文件类型(FILES TYPE

     

    76  

    又分为:

       ? 预定义数据类型、

       ? 用户自定义数据类型 

    1VHDL的预定义数据类型

       1)布尔量(boolean

          布尔量具有两种状态:false 和 true

       常用于逻辑函数,如相等(=)、比较(<)

       作逻辑比较。

       如,bit 值转化成boolean 值:

          boolean_var := (bit_var = ‘1’);

     

    77  

    2)位(bit

        bit 表示一位的信号值。

        放在单引号,如 ‘0’  或 ‘1’。

    3)位矢量 (bit_vector

       bit_vector 用双引号括起来的一组位数据。

       如: “001100”       X“00B10B”

    4)字符(character

       用单引号将字符括起来。

        variable character_var : character;

         ... ...

        Character_var : = ‘A’;

     

    78  

    5)整数(integer

       integer 表示所有正的和负的整数。硬件实现时,

    利用32位的位矢量来表示。可实现的整数范围为:

           -(231-1) to  (231-1)

       VHDL综合器要求对具体的整数作出范围限定,

    否则无法综合成硬件电路。

       如:signal  s :integer range 0 to 15;

       信号 s 的取值范围0-15,可用4位二进制数表

    示,因此 s 将被综合成由四条信号线构成的信号。

     

    79  

    6)自然数(natural)和正整数(positive) 

       naturalinteger的子类型,表示非负整数。

       positiveinteger的子类型,表示正整数。 

       定义如下:

       subtype natural is integerrange 0 to 

         integer’high;

       subtype positive is integerrange 1 to

         integer’high;

     

    80  

    7)实数(REAL

          或称浮点数

          取值范围:-1.0E38 - +1.0E38

          实数类型仅能用于VHDL仿真器,一般综合器

       不支持。

    8)字符串(string

           string character 类型的一个非限定

       数组。用双引号将一串字符括起来。如:

         variable  string_var : string(1 to 7);

           ……

         string_var :=“Rosebud”;

     

    81  

    9)时间(TIME

         由整数和物理单位组成

         如:55 ms,20 ns

    10)错误等级(SEVERITY_LEVEL

        仿真用来指示系统的工作状态,共有四种:

           NOTE(注意)、

           WARNING(警告)、

           ERROR(出错)、

           FAILURE(失败)

     

    82  

    2、IEEE预定义标准逻辑位与矢量

       1)std_logic 类型

           由 ieee 的std_logic_1164 程序

       包定义,为九值逻辑系统,如下:

        (‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’,‘-’)

          ‘U’:未初始化的, ‘X’:强未知的,

          ‘0’:强0,        ‘1’:强1,

          ‘Z’:高阻态,    ‘W’:弱未知的,

          ‘L’:弱0,        ‘H’:弱1,

          ‘-’:忽略

     

    83  

        由 std_logic 类型代替 bit 类型可以完成电

    子系统的精确模拟,并可实现常见的三态总线电路。

    2)std_logic_vector 类型

       由 std_logic 构成的数组。定义如下:

          typestd_logic_vector is array(natural  

              range<>) of std_logic; 

       赋值的原则:相同位宽,相同数据类型。

    84  

    3、用户自定义类型

       用户自定义类型VHDL语言的一大特色。

       可由用户定义的数据类型有:

          ? 枚举类型、

          ? 整数和实数类型、

          ? 数组类型、

          ? 记录类型、

          ? 子类型

     

    85  

         用类型定义语句TYPE和子类型定义语句

    SUBTYPE实现用户自定义数据类型。

        TYPE语句格式: 
     

    例:type byte is array(7 downto 0) of bit

        variable  addend :byte 

        type week is (sun, mon,tue, wed, thu, 

            fri, sat); 

    type 数据类型名   is  数据类型定义  [of   基本数据类型];

     

    86  

    SUBTYPE语句格式: 
     
     

    例:

        subtype digits isinteger range 0 to 9; 

        由subtype 语句定义的数据类型称为子类型。 

    subtype 子类型名  is 基本数据类型   约束范围;

     

    87  

    1)枚举类型

        枚举该类型的所有可能的值。格式: 

    如:type std_logic is(‘U’,‘X’,‘0’,‘1’,

             ‘Z’,‘W’,‘L’,‘H’,‘-’)

    如:type color is(blue,green,yellow, red)

        type my_logic  is (‘0’, ‘1’, ‘U’, ‘Z’)

        variable  hue :color

        signal  sig :my_logic

        hue := blue;      sig <= ‘Z’; 

    type  类型名称  is  (枚举文字{,枚举文字});

     

    88  

    枚举类型的编码:

         综合器自动实现枚举类型元素的编码,一

    般将第一个枚举量(最左边)编码为0,以后的

    依次加1。编码用位矢量表示 ,位矢量的长度

    将取所需表达的所有枚举元素的最小值。 

    如:type color is(blue,green,yellow,red)

        编码为:blue=“00”;              

                green=“01”;

                yellow=“10”;       

                red=“11”;

     

    89  

    2)整数类型

          用户定义的整数类型是标准包中整数类型的子范围。格式: 
     

    例:type my_integer is integer range 0 to 9

    3)数组类型

       数组:同类型元素的集合。VHDL支持多维数组。

       多维数组的声明:

       type byte is array(7 downto 0)of bit

       type vector is array(3 downto0) of  byte

       限定数组、非限定数组、属性: 

    type  类型名称  is  range  整数范围;

     

    90  

    限定数组

        其索引范围有一定的限制。

    格式:

        

    非限定数组:数组索引范围被定义成一个类型范围。

    格式: 
     

    例:type bit_vector is array(integer range <>)

             of  bit

        variablemy_vector:bit_vector (5 downto -5) 

    type  数组名  is  array(数组范围) of  数据类型; 

    type  数组名  is  array(类型名称range <>)  of  数据类型;

     

    91  

    属性:

          VHDL为多种类型定义了属性。

         语法如下:

            对象’属性

         VHDL为数组预先定义的属性:

            left      right

            high      low

            length    range

            reverse_range

     

    92  

    对应变量:

           variable  my_vector : bit_vector (5 downto -5)

    各属性如下:

           my_vector’left                            5

           my_vector’right                        -5

           my_vector’high                          5

           my_vector’low                         -5

           my_vector’length                      11

           my_vector’range                 (5 downto -5)

           my_vector’reverse_range        (-5 to 5)

     

    93  

    4)记录类型

          记录是不同类型的名称域的集合。

       格式如下:

       

       访问记录体元素的方式:记录体名.元素名 

    type  记录类型名  is  record

                       元素名:数据类型名;

                       元素名:数据类型名;

                            ┇  

    end   record

     

    94  

    例:

        constantlen:integer:= 8 ;

      subtype byte_vec is bit_vector(len-1downto 0);

      type byte_and_ix  is record

           byte :byte_vec;

            ix : integer range 0 to len;

      end  record ;

      signal  x, y, z : byte_and_ix ;

      signal  data : byte_vec ;

      signal  num : integer ;

                  …….

      x.byte <= “11110000” ;

      x.ix <= 2 ;

      data <= y.byte ;

      num <= y.ix ;

      z <= x ;

     

    95  

    5)子类型

          子类型是已定义的类型或子类型的一个子集。

    格式:             

    例:

       bit_vector 类型定义如下:

       type bit_vector is array(natural range <>)

           of bit

       如设计中只用16bit;可定义子类型如下:

       subtype  my_vector is  bit_vector(0 to 15)

    注:子类型与基(父)类型具有相同的操作符和子

        程序。可以直接进行赋值操作。 

    subtype  子类型名  is  数据类型名[范围];

     

    96  

    4、数据类型转换

        VHDL是一种强类型语言,不同类型的数据

    对象必须经过类型转换,才能相互操作。 

    1)类型转换函数方式

       通过调用类型转换函数,使相互操作的数据对

    象的类型一致,从而完成相互操作。

     

    97  

    library ieee;

    library dataio;

    use ieee.std_logic_1164.all;

    use dataio.std_logic_ops.all;

    entity cnt4 is

        port(clk: in std_logic;

              p: inout std_logic_vector(3 downto 0);

    end cnt4;

    architecture behv of cnt4 is

    begin

       process(clk)

       begin

          if clk’eventand clk=‘1’ then

            p<=to_vector(2, to_integer(p)+1);

          end if;

       end process;

    end behv;

     

    99  

    2)直接类型转换方式

        对相互间非常关联的数据类型(如整型、浮

    点型),可进行直接类型转换。格式:

        数据类型标识符(表达式)

    如:variable a, b : real;

        variable c, d : integer;

           ……

        a:= real(c);

        d:= integer(b);

     

    展开全文
  • testbench中inout类型端口的处理方式

    千次阅读 2016-11-09 11:05:38
    testbench中inout类型端口的处理方式  1 推荐 测试平台中需要声明与待测模块输入输出端口对应的变量。与输入端口相连接的变量定义为reg,与输出端口相连接的变量定义为wire。双向端口inout...
  • 对openvSwitch中不同类型端口的理解

    千次阅读 2014-10-10 18:49:50
    每个bridge可以通过patch ports互联,而netdev ports是OVS对底层物理端口的抽象封装,internal 类型端口比较不好理解,可以看做每个OVS交换机有个可以用来处理数据报的本地端口,可以为这个网络设备配置 ...
  • 常见的扫描类型有以下几种:   秘密扫描 秘密扫描是一种不被审计工具所检测的扫描技术。 它通常用于在通过普通的防火墙或路由器的筛选(filtering)时隐藏自己。 秘密扫描能躲避IDS、防火墙、包过滤器和日志审计...
  • VLAN端口类型详解——Huawei、Cisco

    千次阅读 多人点赞 2021-02-20 09:59:24
    VLAN端口类型VLAN简介基于端口划分VLANVLAN接口链路类型端口类型Cisco VLAN简介 VLAN(Virtual Local Area Network,虚拟局域网)技术可以把一个物理LAN划分成多个逻辑的LAN——VLAN,每个VLAN是一个广播域。处于...
  • VHDL是一种强类型的语言,它不允许不同数据类型之间的相互赋值。如果想在不同数据类型之间进行赋值则需要调用函数来完成。 在VHDL语言里,基本数据对象有三种:常量,变量以及信号。 常量 常量就是常数,它的数值...
  • Flume 案例实操 - 监控端口数据

    万次阅读 2019-05-18 13:25:33
    首先,Flume监控本机44444端口,然后通过telnet工具向本机44444端口发送消息,最后Flume将监听的数据实时显示在控制台。 Flume监控本机的44444端口,通过Flume的souce端读取数据 通过telnet工具向本机的44444端口...
  • Erlang 数据类型总结

    千次阅读 2014-05-13 17:08:22
    l Erlang数据类型的特点 先说说自身对于erlang数据类型的感观,本人是C程序员,所以对于每个变量或者说对象都对其大小比较敏感,第一眼看到erlang的数据类型时感觉挺变扭,因为erlang有vm,gc,所以对于数据的大小...
  • OpenMax的数据类型

    千次阅读 2014-06-05 17:37:20
    OpenMax的数据类型描述。
  • verilog的数据类型

    千次阅读 2017-07-29 17:45:24
    1 整数、实数和时间寄存器类型 整数是一种通用的寄存器数据类型,用于对数量进行操作,使用integer进行声明。 integer counter; //一般用途的变量用作计数器 initial counter = -1; //把-1存储到寄存器中 实数:实...
  • KEIL C支持数据类型

    万次阅读 2015-12-23 23:15:40
    keil c 支持数据类型摘要编写C语言时必须弄清每种数据类型能表示的数据范围及其占用的字节数,在满足要求的情况下应尽使用占用字节数少的数据类型,因为MCS-51单片机的存储资源是十分宝贵的。  编写C语言时必须...
  • Redis执行流程9.Redis数据类型只需要掌握第一种为字符串的形式10. Redis的指令(对应五种数据类型)10.1 字符串类型10.2 Hash类型10.3 列表类型List10.4 集合类型10.5 通用指令(所有类型都可以使用) 1. Redis概述 ...
  • redis快速入门-数据类型

    千次阅读 2016-04-20 22:54:18
    前言最近因项目需要用到redis,所以借助《Redis入门指南》(李子骅 编著)这本书快速入门了一下,此处记录下一些知识点(主要是命令),方便以后查阅。...相比许多键值数据存储,Redis拥有一套较为丰富的数据类型。Red
  • Verilog数据类型

    万次阅读 2014-10-01 20:23:26
     在一个端口表达式的声明中,如果没有对端口数据类型进行显式说明,那么默认的端口数据类型就为wire型,且默认的wire型矢量的位宽与矢量型端口声明的位宽相同。  在基本元件例化。模块例化的端口列表中,...
  • Redis 5种数据类型—— list(列表)

    千次阅读 2018-09-22 14:41:11
    从头部(左边)插入数据:lpush key v1 v2 v3 从尾部(右边)插入数据:rpush key v1 v2 v3 读取list中指定范围的values:lrange key start end redis&gt; lrange task-queue 0 -1 (-1表示读取整个l...
  • Verilog的数据类型

    万次阅读 2010-12-04 11:03:00
    <br /> 1 整数、实数和时间寄存器类型 整数是一种通用的寄存器数据类型,用于对数量进行操作,使用integer进行声明。 integer counter; //一般用途的变量用作计数器 initial  ...
  • Simulink中枚举数据类型的使用方法

    千次阅读 2018-05-09 23:21:31
    Simulink中枚举数据类型的使用方法 1. 楔子 2. Simulink 模型中使用枚举数据类型 3. Stateflow 模型中使用枚举数据类型 1. 楔子 笔者刚刚接触simulink和stateflow时,受之前的c语言影响,很多变量都想要...
  • H3C交换机端口类型详解

    千次阅读 2012-04-07 10:16:56
    H3C交换机以太网端口类型:Access、Hybrid和Trunk三种模式的理解 预备知识: Tag,untag以及交换机的各种端口模式是网络工程技术人员调试交换机时接触最多的概念了,然而笔者发现在实际工作中技术人员往往对这些...
  • 常见的端口扫描类型及原理

    万次阅读 2015-05-05 17:10:33
    常见的扫描类型有以下几种:   秘密扫描 秘密扫描是一种不被审计工具所检测的扫描技术。 它通常用于在通过普通的防火墙或路由器的筛选(filtering)时隐藏自己。 秘密扫描能躲避IDS、防火墙、包过滤器和...
  • Cacti多端口流量聚合成一个图,并取95方法 第一步、首先打开 ->控制台 ->图形管理 ->添加 第二步、选择图形模板是选择默认“无” 第三步、这一步的时候在标题栏填入名称,然后点右下角“添加”按钮...
  • redis的列表类型list是一个常用的数据类型,但是这个类型并不支持一次性返回多个并删除这些已经返回的
  • Verilog端口连接规则

    千次阅读 2019-09-03 16:48:28
    端口声明 端口列表中的所有端口必须在模块中进行声明,verilog中的端口具有以下三种了类型:input、output、和inout...不能将input和inout类型的端口声明为reg数据类型,因为reg类型的变量是用于保存数值的,而输入...
  • 华为以太网端口三种链路类型access,trunk,hybrid的理解

    千次阅读 多人点赞 2019-07-22 18:42:23
    需要知道的是,三种端口本质上没有太大区别,读者千万不要走入这样的误区,例如不要trunk端口必须是交换机和交换机之间用到,它们本质都是为转发数据而存在的。 众所周知,我们初次接触这几个端口类型概念的时候,...
  • 在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息。 辅助DNS服务器启动时,它需要与主DNS服务器通信,并加载数据信息,这就叫做...
  • 这些数据类型修饰符主要改变允许的的范围。数据类型修饰符之应用于数据,而不针对函数。程序员可以在变量、参数和函数的返回值里使用它们。某些数据类型修饰符能够同任何变量一起使用,而其他则只用于特殊类型的一...
  • 上一篇关于“完成端口”的文章中,我们讲解了在同一个控制台程序中完成本地文件的拷贝,利用的是ReadFile和WriteFile两个API函数。本篇将讲解一下怎样利用完成端口来完成网络文件的拷贝,即通过网络将客户端的文件...
  • Linux 端口信息查看  大家都知道,端口不是独立存在的,它是依附于进程的。某个进程开启,那么它对应的端口就开启了,进程关闭,则该端口也就关闭了。下次若某个进程再次开启,则相应的端口也再次开启。而不要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 349,099
精华内容 139,639
关键字:

数据类型端口值