集成电路中的assert和deassert应该如何翻译?

我每次看到电路中的assert与deassert时,总是感觉别扭,因为词典翻译总是"断言",没看到有电路中的‘拉高/低’,或“置位/清零”的解释,但从上下文的语境感觉就应该是这样翻译,所以今天baidu了一下,发现早有人研究这个问题,今天转载至此。

[转载于: http://ad9850.blog.sohu.com/132669100.html ]

集成电路的数据手册中经常出现assert和deassert二个单词,有很多人把assert译成"断言",但是我觉得译为"有效"更为符合实际.deassert译为"无效".

    例如:某数据手册中写道The address line ADD is asserted at time t1 and is deasserteed at time t2.接下来给出的时序图中可以看出,ADD信号在t1时变成高电平,t2时变为低电平.我们可以译为:"地址线ADD在t1时有效,在t2时无效."

    也有人说可以把assert译为"置位",deassert译为"清零",但是我认为这样不妥.因为对于低电平有效的信号,assert代表的是清零,而不是置位.例如PXA270的数据资料中有一段话:The external power-control subsystem de-asserts nBATT_FAULT to signal that the main
battery is connected and not discharged.这句话的大意是:nBATT_FAULT引脚是高电平时,表示主电池正常.显然,些处把de-assert译为清零是不对的,而应该译是"无效".

今天在看PXA270数据手册时发现了INTEL对assert和deassert的解释(第40页).解释如下:
assert: Drive a signal to its active voltage level, either high or low.
deassert: Drive a signal to its inactive voltage level, either high or low.


在 C++ assert 是一种宏定义,其目的是在代码判断所给定的条件是否为真,如果为假,则终止程序的执行。如果想要将 assert 的行为修改为抛出异常,可以使用以下两种方法: 1.使用自定义宏定义 可以使用自定义宏定义来将 assert 的行为修改为抛出异常。下面是一个示例代码: ```c++ #include <stdexcept> #include <iostream> // 将 assert 的行为改为抛出 runtime_error 异常 #define assert(expression) \ if (!(expression)) \ throw std::runtime_error("Assertion failed: " #expression); int main() { int x = 10; int y = 5; assert(x > y); std::cout << "x > y" << std::endl; return 0; } ``` 在上面的代码,我们使用了自定义宏定义将 assert 的行为修改为抛出 runtime_error 异常。在执行 assert(x > y) 的时候,如果 x > y 不成立,将会抛出一个 runtime_error 异常,程序的执行也会随之终止。 2.使用断言包装函数 另一种将 assert 的行为修改为抛出异常的方法是使用一个断言包装函数,这个函数将会接受一个表达式作为参数,如果表达式不成立,则将会抛出一个异常。下面是一个示例代码: ```c++ #include <stdexcept> #include <iostream> void assert_impl(bool expression, const char* message) { if (!expression) { throw std::runtime_error(message); } } #define assert(expression) assert_impl(expression, "Assertion failed: " #expression) int main() { int x = 10; int y = 5; assert(x > y); std::cout << "x > y" << std::endl; return 0; } ``` 在上面的代码,我们定义了一个断言包装函数 assert_impl,这个函数将会接受一个表达式和一个消息作为参数,如果表达式不成立,则将会抛出一个带有消息的 runtime_error 异常。然后,我们重新定义了 assert 宏,将它替换为调用 assert_impl 函数。这样,在执行 assert(x > y) 的时候,如果 x > y 不成立,将会抛出一个带有消息的 runtime_error 异常,程序的执行也会随之终止。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值