关于 VHDL 的信号和变量

本文介绍了VHDL编程中的关键概念——信号(signal)和变量(variable)。信号在进程执行中只改变一次值,且赋值非立即生效,而变量则类似常规编程语言,赋值立即生效。在设计VHDL程序时,应注意信号的处理方式,并理解进程的可重入特性。同时,文中给出了使用变量的示例,强调了变量的生命周期和作用域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前几天做课设,要用 VHDL 这种怪异的硬件语言。我的经验是:对于 VHDL 不能按照常规的编程语言的执行方式来理解。这篇日志就算是我对已经会其他编程语言的人写 VHDL 程序的一点经验总结。

 

环境是 IspLever5 。

 

1. 理解信号(signal):在一个进程(process)的一次执行中,信号的值只会改变一次(不管被赋了几次值)。而且,对信号的赋值不是立即生效,而是在进程结束后才生效。输入(in)、输出(out)和 buffer 端口默认都是信号。

 

所以设计思路应该是这样的:在进程的所有执行分支中,每个输出信号都应该赋值,不要假定信号可以保存之前的值(尽管手册上是这么写的)。

 

可以这么想象:在一个电路中,输出端口总有电流通过,所以信号总是需要赋值的。

 

2. 进程实际上类似于回调函数,应该是可重入的(http://zh.wikipedia.org/zh-cn/可重入)。随时应该想到硬件固有的并行性。

 

3. 如果需要在进程中修改一个信号,而且后面马上就要用的修改之后的值,那么你应该使用变量(variable):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值