热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《VHDL数字电路设计教程》电工版/第4章

1.1运算操作符①赋值运算符<用于对SIGNAL赋值。:用于对VARIABLE,CONSTANT和GENERIC赋值,也可用

1.1    运算操作符

    ①赋值运算符

    <=    用于对SIGNAL赋值。

    :=    用于对VARIABLECONSTANTGENERIC赋值,也可用于赋初始值

    =>    给矢量的某些位赋值,或对某些位之外的其他位(常用OTHERS表示)赋值。

w <= (0 => '1', OTHERS => '0');
--最低位是1,其他位是0。

    ②逻辑运算符

    操作数必须是BITSTD_LOGICSTD_ULOGIC类型或它们的扩展(BIT_VECTORSTD_LOGIC_VECTORSTD_ULOGIC_VECTOR,逻辑运算时各位分别进行逻辑运算)。

    ·NOT——取反

    ·AND——与

    ·OR——或

    ·NAND——与非

    ·NOR——或非

    ·XOR——异或

    ·XNOR——同或

    从上至下,优先级依次递减

    ③算数运算符

    +    加        

    -    减        

    *    乘        

    /    除        

    **    指数运算        

    MOD    取模        

    REM    取余        

    ABS    取绝对值

    上述运算符中,“+”、“-”和“*”是可以综合成逻辑电路的,对于“/”,只有在除数为2的n次幂时才可以综合,相当于将被除数右移n位。对于指数运算“**”,只有当底数和指数都是静态数值(CONSTANTGENERIC参数)时才可以综合。

    下述3个运算符(MOD、REM和ABS)都是不可综合的,其中注意:

    y MOD x 运算结果是y除以x所得的余数,运算结果通过信号x(即正负号与x相同)返回;

    y REM x  运算结果是y除以x所得的余数,运算结果通过信号y(即正负号与y相同)返回;

    两个异号整数取模取值规律 (当是小数时也是这个运算规律),先将两个整数看作是正数,再作除法运算,能整除时,其值为0;不能整除时,其值=除数×(整商+1)-被除数,符号根据上述规律确定。

    ④关系运算符

    =    /=    <    >    <=    >=

    关系运算符左右两边的操作数的数据类型(适用于所有数据类型)必须相同

    ⑤移位操作符

    语法结构:<左操作数><移位操作符><右操作数>

    其中,左操作数必须是BIT_VECTOR,右操作数必须是INTEGER类型(可带正负号)。

    

    ⑥并置运算符

    用于位的拼接,其操作数是支持逻辑运算的任何数据类型。

    例 

z <= x & "1100";
z = ('1','1','1','0','0');

1.2    属性

    ①数值类属性(可综合

    d'LOW    返回数组索引的下限值

    d'HIGH    返回数组索引的上限值

    d'LEFT    返回数组索引的左边界值

    d'RIGHT    返回数组索引的右边界值

    d'LENGTH    返回矢量的长度值

    d'RANGE    返回矢量的位宽范围

     d'REVERSE_RANGE    按相反的次序,返回矢量的位宽范围

    例

SIGNAL d: STD_LOGIC_VECTOR(7 DOWNTO 0);

    则有:d'LOW=0,d'HIGH=7;d'LEFT=7,d'RIGHT=0;d'LENGTH=8;d'RANGE=(7 DOWNTO 0),

d'REVERSE_RANGE=(0 TO 7)。

    ②信号类属性(可综合

    s'EVENT    如果s的值发生变化,则返回值为布尔量TRUE,否则返回FALSE

    s'STABLE    如果s保持稳定,没有发生变化,则返回值为布尔量TRUE,否则返回FALSE

例    

如果信号clk出现了上升沿,那么将返回TRUE,即括号中的返回值为TRUE。

IF (clk'EVENT AND clk = '1')...
IF (NOT clk'STABLE AND clk = '1')...
IF RISING_EDGE(clk)...

1.3    自定义属性

    第一步,属性声明:

ATTRIBUTE attribute_name: attribute_type;

    其中,attribute_type可以是任何数据类型。

    第二步,进行属性描述:

ATTRIBUTE attribute_name OF target_name:class IS value;

    其中,class可以使数据类型、信号、变量、函数、实体或构造体等。

1.4    通用属性语句

    GENERIC(属性)语句提供了一种指定常规参数的方法,所指定的参数是静态的。

    GENERIC(属性)语句必须在ENTITY中进行声明,且其指定的参数是全局的。其语法结构如下:

GENERIC (parameter_name1 : parameter_type1 := parameter_value1;
         parameter_name2 : parameter_type2 := parameter_value2;
          ...);



推荐阅读
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在 Linux 环境下,多线程编程是实现高效并发处理的重要技术。本文通过具体的实战案例,详细分析了多线程编程的关键技术和常见问题。文章首先介绍了多线程的基本概念和创建方法,然后通过实例代码展示了如何使用 pthreads 库进行线程同步和通信。此外,还探讨了多线程程序中的性能优化技巧和调试方法,为开发者提供了宝贵的实践经验。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 在 LeetCode 第 307 题中,我们详细探讨了树状数组(Fenwick Tree)的应用及其优化策略。树状数组 `tree` 用于存储特定区间内的元素和,其中区间的左边界是当前索引的二进制表示中去掉最后一个 1 后再加 1,右边界即为当前索引本身。此外,还维护了一个原始数组 `nums` 和一个表示数组长度的变量 `N`。通过这些结构,我们可以高效地实现区间求和与单点更新操作。 ... [详细]
  • Spring框架中枚举参数的正确使用方法与技巧
    本文详细阐述了在Spring Boot框架中正确使用枚举参数的方法与技巧,旨在帮助开发者更高效地掌握和应用枚举类型的数据传递,适合对Spring Boot感兴趣的读者深入学习。 ... [详细]
  • 深入解析Android 4.4中的Fence机制及其应用
    在Android 4.4中,Fence机制是处理缓冲区交换和同步问题的关键技术。该机制广泛应用于生产者-消费者模式中,确保了不同组件之间高效、安全的数据传输。通过深入解析Fence机制的工作原理和应用场景,本文探讨了其在系统性能优化和资源管理中的重要作用。 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 本文详细解析了Java类加载系统的父子委托机制。在Java程序中,.java源代码文件编译后会生成对应的.class字节码文件,这些字节码文件需要通过类加载器(ClassLoader)进行加载。ClassLoader采用双亲委派模型,确保类的加载过程既高效又安全,避免了类的重复加载和潜在的安全风险。该机制在Java虚拟机中扮演着至关重要的角色,确保了类加载的一致性和可靠性。 ... [详细]
  • 2018 HDU 多校联合第五场 G题:Glad You Game(线段树优化解法)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6356在《Glad You Game》中,Steve 面临一个复杂的区间操作问题。该题可以通过线段树进行高效优化。具体来说,线段树能够快速处理区间更新和查询操作,从而大大提高了算法的效率。本文详细介绍了线段树的构建和维护方法,并给出了具体的代码实现,帮助读者更好地理解和应用这一数据结构。 ... [详细]
  • 在2019年寒假强化训练中,我们深入探讨了二分算法的理论与实践应用。问题A聚焦于使用递归方法实现二分查找。具体而言,给定一个已按升序排列且无重复元素的数组,用户需从键盘输入一个数值X,通过二分查找法判断该数值是否存在于数组中。输入的第一行为一个正整数,表示数组的长度。这一训练不仅强化了对递归算法的理解,还提升了实际编程能力。 ... [详细]
  • 本文探讨了一种高效的算法,用于生成所有数字(0-9)的六位组合,允许重复使用数字,并确保这些组合的和等于给定的整数N。该算法通过优化搜索策略,显著提高了计算效率,适用于大规模数据处理和组合优化问题。 ... [详细]
author-avatar
平凡黯淡_551
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有