VHDL10:VHDL实现运算符重载并仿真,vhdl下包(package)的使用

11 篇文章 2 订阅
订阅专栏
该文介绍了如何在VHDL中创建包ReOperator,包含两个自定义函数:bit_to_int和位向量相加的运算符重载。在EG8工程中,通过引入包并调用这些函数,实现了一个基于位向量输入的加法器。经过编译和功能仿真,验证了设计的正确性。
摘要由CSDN通过智能技术生成

目录

1. 示例说明

2. 创建在EG8工程

3. 在EG8工程下创建ReOperator.vhd文件

4. 在EG8工程下创建EG8.vhd文件

5. 工程编译结果

6. 功能仿真结果

7. 文件调用说明


1. 示例说明

本例引入了包的概念,在ReOperator文件中创建包,并在包下创建了两个函数bit_to_int和“+”运算符重载。在EG8.vhd文件下通过引入包后再引入相关函数做操作。

工程文件关系如下:

 

2. 创建在EG8工程

 

3. 在EG8工程下创建ReOperator.vhd文件

 

ReOperator.vhd源码文件:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

package ReOperator is

-- 包头(包说明)

         subtype short is integer range 0 to 65535;

         subtype int4 is integer range 0 to 16;

         subtype int8 is integer range 0 to 255;

        

         --以下均为函数头,具体定义见包体

         function bit_to_int (in1: bit_vector) return integer;

         function "+" (in1, in2: bit_vector) return integer;

end ReOperator;

package body ReOperator is -- 包体,由关键字package body标识

         -- 函数 bit_to_int将位向量转化为十进制整数值

         function bit_to_int (in1: bit_vector) return integer is

                            alias v1: bit_vector(in1' length-1 downto 0) is in1;

                            variable inpv: bit_vector(in1' length-1 downto 0);

                            variable SUM: integer := 0;

                            variable negative: boolean := false;

                           

                   begin       

                            inpv := in1;

                            if v1(v1' length-1) = '1' then

                                     for i in v1' length-1 downto 0 loop

                                               inpv(i) := not inpv(i);

                                     end loop;

                            lp1:

                                     for i in 0 to v1' length-1 loop

                                               if inpv(i) = '1' then

                                                        inpv(i) := '0';

                                               else

                                                        inpv(i) := '1';

                                                        exit lp1;

                                               end if;

                                     end loop;

                            negative := true;

                            end if;

                            for i in v1' length-1 downto 0 loop

                                     if inpv(i) = '1' then SUM := SUM+2**i;

                                     end if;

                            end loop;

                            if negative then return (0-SUM);

                            else return SUM;

                            end if;

         end bit_to_int;

         -- 重载函数  “+” 将两个位向量相加,得到相应的整数值

         function "+" (in1, in2:bit_vector) return integer is

         begin

                   -- 用到了前面定义的函数bit_to_int,将两个位向量先分别转化为整数,然后再相加

                   return (bit_to_int(in1) + bit_to_int(in2));

         end "+";

end ReOperator;

        

4. 在EG8工程下创建EG8.vhd文件

 

EG8.vhd源码文件:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

LIBRARY work;

use work.ReOperator.all;

entity EG8 is --带控制端口的加法器,输入输出为位向量

         port(

                   in1 : in bit_vector(15 downto 0);

                   in2 : in bit_vector(15 downto 0);

                   cnt1 : in bit;

                   pout : out integer

         );

end EG8;

architecture func of EG8 is

begin

         process(cnt1)            -- 带有信号敏感表的进程,敏感信号为cnt1

         begin                          

                   if(cnt1 = '1') then pout <= in1 + in2; -- 调用“+”运算符重载

                   end if;

         end process;

end func;

5. 工程编译结果

 

6. 功能仿真结果

 

7. 文件调用说明

 

VHDL仿真
小柚子的博客
01-01 2015
VHDL仿真 仿真(Simulation也称模拟),不接触具体的硬件系统利用计算机对电路设计的逻辑行为和运行功能进行模拟检测,较大规模的VHDL系统设计的最后完成必须经历多层次的仿真测试过程,包括针对系统的VHDL行为仿真、分模块的时序仿真和硬件仿真,直至最后系统级的硬件仿真测试。 (1)仿真激励信号的产生 LIBRARY IEEE; --库、程序包的说明调用 USE IEEE.STD_LOGIC_1164.ALL; ENTITY ADDER4 IS PORT ( a,b : IN INTEGE
VHDL模式:Sublime Text软件包,可帮助以VHDL语言进行编码
02-05
该程序包可以单独使用,但是可以与Emacs Pro Essential程序包和平共处。 同样,键盘快捷方式是围绕Emacs中的vhdl-mode快捷方式设计的。 此外,现在有一个“首选项”设置,可以根据需要激活Emacs vhdl-mode键盘绑定...
VHDL自定义库 (程序包的使用
qq_36143127的博客
03-07 8586
**记录学习,记录成长 VHDL自定义库(程序包的使用VHDL中默认一个work库作为用户的project的设计库,用户可以通过定义PACKAGE(程序包)来定义work库中的内容。 程序号(PACKAGE)的定义分为两部分内容:包首部分和包体部分 在多个元件例化时,可将元件声明部分放在定义程序包中。通过使用该库,在调用元件时,不用再次声明元件,可直接使用库中元件。 package tes...
vhdl 程序包的使用
weifengzc的博客
06-09 1522
1.定义 程序包:为了使已定义的常数、数据类型、元件调用说明、子程序等能被更多的其他设计实体方便地访问和同享,可将它们收集在一个vhdl程序包中。 2.语法结构 多个程序包可以并入一个vhdl库中 一个程序包至少应该包含以下结构中的一种: 1.常数说明 2.数据结构类型说明 3.元件定义 4.子程序 语法结构: package 程序包名 is 程序包首说明部分 end 程序包名; package boby 程序包名 is 程序包体说明部分以及包体内容 end 程序包名; 3.示例 程序包文件pack.vh
基于VHdl函数重载方法程序实现
俯κǎń迗倥
05-28 3418
基于VHDL函数重载方法程序设计 函数(function) 一个函数就是一段顺序描述的代码。对于一些经常遇到的具有共性的设计问题,如数据类型转换、算术运算等,希望将其功能实现的代码被共享和重用,使主代码简洁并易于理解—函数。 注意:由于在于每次调用函数时,都要首先对其进行初始化,即一次执行结束后再调用需再次初始化,即函数内部的值是不能保持的,因此在函数中禁止进行信号声明和元件实例化。 函数的使用过程:先创建函数,再调用函数。 函数的存放形式 功能描述: “+”函数: 功能描述:扩展预定义的“+”操作符,进
VHDL语法入门 (七) 包集和元件
最新发布
EfunStudy的博客
06-20 2580
component和entity的声明格式一样,必须指出端口名称以及端口模式(in,out,buffer或inout)以及数据类型(std_logic_vector,interger和boolean等)。元件(component),函数(function)以及过程(procedure)等部分的使用往往是为了实现常用代码的共享。一个元件(component)是一段结构完整的常用代码(包括库声明,实体和结构体这些基本组成部分)。package的声明部分包括以下内容:元件,函数,过程,类型和常量说明等。
使用Quartus13进行VHDL工程的编写与仿真
热门推荐
Alangman的博客
04-19 1万+
使用Quartus13进行VHDL工程的编写与仿真 编写代码 点击新建一个工程 选择工程保存的路径,填写工程名称,注意,三个圈起来的应该相同 与上一步的文件名也相同; 选择设备类型,一定要进行选择,否则后面编译仿真时可能会出错 我们使用开发板芯片为EP4CE10F17C8 EDA Tools Settings中的仿真工具选择None,不需要自动进行波形仿真。 点击Finish 点击新建文件,选择 vhdl file 编写vhdl语言程序,以我们上次实验
VHDL.sheji.2.rar_10进制计数器_vhdl 仿真_计数器_计数器 VHDL_计数器仿真
09-24
在本主题中,我们主要关注的是使用VHDL进行10进制计数器的设计与仿真。计数器是数字系统中的基本组件,它能跟踪时间序列或执行累加操作。 10进制计数器是一种能够按10进制顺序计数的电路,通常由D触发器和逻辑门...
Fibonacci-Calculator-VHDL:在VHDL实现计算斐波那契数的电路
03-30
VHDL实现可计算斐波纳契数的电路 阅读pdf 算法 #include“ stdio.h” void main(){//声明各种变量。 int x,y,temp,i,n; 我= 3; x = 1; y = 1; printf(“ Digite n:”); scanf(“%d”,&n); ...
FPGA实例源代码:MASK调制VHDL程序及仿真.doc
06-06
该程序使用VHDL语言描述了MASK调制的电路结构,并实现了基带信号的串并转换和ASK调制。 MASK调制VHDL程序的结构主要包括两个部分:一个是对基带信号的串并转换,另一个是对8位DAC数据的ASK调制。该程序使用了两个...
VHDL仿真.pdf
04-17
很好的资源 请认真阅读
vhdl仿真完整操作流程演示
12-20
为了初学者学习方便,我特地做了这个,希望可以帮到大家
VHDL仿真1 多路选择器
05-05
2选1多路选择器 参考文献 《VHDL电路设计》 P31 Quartus II 的仿真
VHDL算术运算包括加减乘除乘方等
12-11
VHDL描写的各种算术运算,包括加减乘除,乘方==
verilog hdl vhdl实用例子100个 quartus 2 仿真 源程序
03-25
verilog hdl vhdl实用例子100个 quartus 2 仿真 源程序
VHDL.rar_VHDL仿真_lcd program in vhdl_vhdl_vhdl lcd _vhdl 仿真
09-23
总结来说,这个压缩包提供了一系列使用VHDL进行硬件描述和仿真的实例,涵盖了LCD和LED控制,以及一个更复杂系统——自动售货机的实现。这些示例对于学习VHDL和数字系统设计非常有帮助,通过阅读和理解代码,可以深入...
FPGA学习笔记】VHDL仿真
yang_jiangning的博客
04-01 4401
vhdl仿真流程以及测试文件tb的编写
VHDL的TestBench仿真
weixin_43850409的博客
10-20 1万+
本人是刚接触FPGA的小白,这也是我第一次写文章。如果文中有错误和不恰当的地方,还望大家提出建议和指导。以下就是我对testbench的理解和总结。 对于testbench文件,我是这样理解的:testbench文件实际上也是一个vhdl文件(后缀为.vhd)。我们将设计好的电路模块封装为一个元件,然后在testbench文件例化它,再通过映射的端口产生激励信号。这些激励信号模拟成待测试的电路模块...
简单实现运算符重载
程序猿成长之路
07-25 827
#include using namespace std; class TriCoor { public: TriCoor(int mx=0,int my=0,int mz=0){x=mx;y=my;z=mz;}; TriCoor operator +(TriCoor t) { TriCoor temp; temp.x=x+t.x;temp.y=y+t.y;temp.z=z+t.
写文章

热门文章

  • VHDL11:VHDL两个独立的vhdl文件在同一个工程中使用,加载到顶层文件中,实现模块化的功能 4066
  • C/C++通过LoadLibrary显示调用动态库 3762
  • C/C++ cctype中非常实用的判断是否是数字,是否是字母,转换大小写,判断是否是运算符字符等,实用的小函数 3539
  • C/C++ 关于逻辑运算符and、or、not的使用 2679
  • C/C++ 字节对齐alignas()的使用 2164

分类专栏

  • 算法学习 18篇
  • windows驱动开发 65篇
  • C/C++学习 91篇
  • linux驱动开发 2篇
  • 设计模式 11篇
  • VHDL学习 11篇

最新评论

  • Windows内存管理 - Windows驱动程序和进程的关系

    WendyWJGu: 表情包 是的是的,在WINDOWS驱动开发中是区分内核态和用户态的

  • Windows内存管理 - Windows驱动程序和进程的关系

    zjxiuqiao: Windows驱动程序不能直接打开某个进程。‌ 在Windows操作系统中,驱动程序是一种特殊的软件,它允许操作系统与硬件设备进行交互。驱动程序可以被视为一个特殊的DLL文件,被加载到虚拟内存中,并且只能访问其所属进程的虚拟内存。这意味着,驱动程序虽然可以加载到内存中,但它并不能直接打开或操作其他进程。驱动程序运行在不同的进程中,并且其运行的环境是内核模式地址,而不是用户模式地址。这确保了驱动程序的安全性和系统的稳定性,防止了恶意软件通过操纵驱动程序来控制或破坏系统进程‌1。 此外,Windows驱动程序的设计和功能主要是为了与硬件设备进行通信,而不是为了直接操作或控制应用程序进程。它们通过提供接口给操作系统和其他应用程序,使得这些程序能够与硬件进行交互,而不是直接打开或操作其他进程‌23。 因此,虽然驱动程序在系统中扮演着重要的角色,但它们并不具备直接打开或操作其他进程的能力。

  • Windows内存管理-结构化异常处理(try-finally块)

    WendyWJGu: 非常感谢 但不敢居功 学习时抄书 黑色封面的《驱动开发技术详解》

  • VHDL11:VHDL两个独立的vhdl文件在同一个工程中使用,加载到顶层文件中,实现模块化的功能

    WendyWJGu: File->New->VHDL File

  • VHDL11:VHDL两个独立的vhdl文件在同一个工程中使用,加载到顶层文件中,实现模块化的功能

    2201_75847603: 怎么创建第eg2

最新文章

  • C++ 十进制数转换成7进制字符串
  • 派遣函数 - 缓冲区设备模拟文件读写
  • 派遣函数 - 缓冲区设备读写
2024
10月 1篇
09月 13篇
05月 23篇
04月 2篇
03月 6篇
02月 15篇
01月 22篇
2023年118篇
2022年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WendyWJGu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家贵州环保玻璃钢雕塑批发商场雕塑皇冠玻璃钢雕塑上海常用商场美陈研发公司通化玻璃钢花盆花器青岛玻璃钢雕塑卡通深圳周边商场美陈市场报价合肥春节商场美陈常见玻璃钢雕塑摆件哪里买浙江动物玻璃钢雕塑市场抛售玻璃钢人物雕塑邢台玻璃钢人物雕塑价格松原玻璃钢雕塑定制温州玻璃钢花盆怎么样信阳玻璃钢动物雕塑图片大全龙岩玻璃钢花盆多少钱上海室内商场美陈哪家好郑州欧式玻璃钢雕塑多少钱山东户外玻璃钢雕塑订做价格广东会发光的玻璃钢雕塑生产商玻璃钢人物浮雕雕塑卡通雕塑玻璃钢哪个信誉好保定玻璃钢雕塑哪里有人物玻璃钢雕塑该怎么做定西玻璃钢景观雕塑订做湖南玻璃钢动物雕塑商场户外美陈创意运城锻铜玻璃钢景观雕塑平潭玻璃钢雕塑厂家出口玻璃钢花盆花器涪陵区玻璃钢雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化