VHDL**过程的应用(数组元素从大到小排序)

用VHDL描述排序功能,将一个数组的元素按从小到大的顺序排列,引入了过程(PROCEDURE)调用、自定义程序包、数据类型(整型数组)。

PACKAGE data_type IS									--定义程序包
	SUBTYPE data_element IS INTEGER RANGE 0 TO 3;		--定义数据类型
	TYPE data_array IS array(1 TO 3) OF data_element;
END data_type;

USE WORK.data_type.ALL;									--打开以上建立在当前工作库的程序包data_type
ENTITY sort IS 
	PORT(in_array: IN data_array;
			out_array: OUT data_array);
END ENTITY;

ARCHITECTURE behave OF sort IS
BEGIN
	PROCESS(in_array)									--进程开始,设data_type为敏感信号
	PROCEDURE swap(data:	INOUT data_array;			--swap的形参名为data、low、high
							low,high:IN INTEGER)IS
			VARIABLE temp:	data_element;
		BEGIN											--开始描述本过程的逻辑功能
			IF(data(low)>data(high))	THEN			--检测数据
				temp := data(low);
				data(low) := data(high);
				data(high) := temp;
			END IF;
		END swap;										--过程swap定义结束
		VARIABLE my_array:data_array;					--在本进程中定义变量my_array
	BEGIN												--进程开始
		my_array := in_array;							--将输入值读入变量
		swap(my_array,1,2);								--my_array、1、2是对应于data、low、high的实参
		swap(my_array,2,3);								--位置关联调用,第2、第3元素交换
		swap(my_array,1,2);								--位置关联调用,第1、第2元素再次交换
		out_array <= my_array;
	END PROCESS;
END behave;

在进程中三次调用过程,依次把相邻的两个数按大小排序。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值