verilog - Verilog 实现一个
我正在尝试理解这段代码,但我无法理解它
// upper bits are always zero
assign slt[31:1] = 0;
xor (condition, a[31], b[31]);
yArith slt_arith (tmp, cout, a, b, 1);
yMux #(.SIZE(1)) slt_mux(slt[0], tm
问题描述
我正在尝试理解这段代码,但我无法理解它
// upper bits are always zero
assign slt[31:1] = 0;
xor (condition, a[31], b[31]);
yArith slt_arith (tmp, cout, a, b, 1);
yMux #(.SIZE(1)) slt_mux(slt[0], tmp[31], a[31], condition);
a
并且b
是一些 32 位数字
该代码正在尝试实现(a < b) ? 1 : 0;
在 mips 中称为 slt
该yArith
部分正在执行 (ab) 并将结果放入tmp
, 1 是减法标志。
该yMux
部分是 2x1 多路复用器,需要一些条件(0 或 1)来选择tmp[31]
条件为 0 或a[31]
条件为 1。
为什么这段代码比在 Verilog 中实现 set on less 有效?
正则表达式通过删除部分 URL 来重定向 URL
我对 Wordpress 网站做了一些更改,一些 URL 过去采用以下格式:
domain.com/question-sample-url
我想使用 Yoast 的正则表达式重定向将所有这些域重定向到:(
domain.com/sample-url
没有问题-)
现在,我已经能够使用以短语开头的正则表达式然后 * 将 URL 重定向到默认 URL。但是,现在我只需要删除该短语的一部分。谢谢
解决方案
如果a
和b
有相反的符号,则a
只能小于b
如果a
为负。
用伪代码表示:
if (a[31] XOR b[31]) {
result = a[31]
}
如果a
和b
具有相同的符号,那么显然我们不能只查看其中一个操作数的符号位。相反,我们检查是否a-b
为负。
if (!(a[31] XOR b[31])) {
result = (a-b)[31]
}
如果我们将这两者结合起来:
if (a[31] XOR b[31]) {
result = a[31]
} else {
result = (a-b)[31]
}
如果您想知道为什么我们不总是使用(a-b)[31]
,请考虑a = -2147483648
(0x80000000) 和b = 1
. 显然 -2147483648 小于 1,但是(0x80000000-1)[31]
== (0x7FFFFFFF)[31]
,即 0。所以那是行不通的。
推荐阅读
- c# - Json.NET:使用方括号进行序列化
- javascript - 按钮组件需要两次点击
- javascript - 当内容嵌套在数组中时,React 看不到“标记更改”
- kotlin - Kotlin 协程。API 调用完成时运行代码
- ansible - Meraki API 获取所有组织
- c++ - 错误:
构建inkscape时找不到 - java - 产品列表中的产品价格总和,键是产品类型,值是使用流的产品类型的价格总和
- python - wxpython textctrl 样式动态文本颜色
- ansible - 无法理解来自 ansible parted 模块的错误
- javascript - Javascript 和 D3 错误:无法读取未定义的属性“云”
我正在尝试理解这段代码,但我无法理解它
// upper bits are always zero
assign slt[31:1] = 0;
xor (condition, a[31], b[31]);
yArith slt_arith (tmp, cout, a, b, 1);
yMux #(.SIZE(1)) slt_mux(slt[0], tm
问题描述
我正在尝试理解这段代码,但我无法理解它
// upper bits are always zero
assign slt[31:1] = 0;
xor (condition, a[31], b[31]);
yArith slt_arith (tmp, cout, a, b, 1);
yMux #(.SIZE(1)) slt_mux(slt[0], tmp[31], a[31], condition);
a
并且b
是一些 32 位数字
该代码正在尝试实现(a < b) ? 1 : 0;
在 mips 中称为 slt
该yArith
部分正在执行 (ab) 并将结果放入tmp
, 1 是减法标志。
该yMux
部分是 2x1 多路复用器,需要一些条件(0 或 1)来选择tmp[31]
条件为 0 或a[31]
条件为 1。
为什么这段代码比在 Verilog 中实现 set on less 有效?
我对 Wordpress 网站做了一些更改,一些 URL 过去采用以下格式:
domain.com/question-sample-url
我想使用 Yoast 的正则表达式重定向将所有这些域重定向到:(
domain.com/sample-url
没有问题-)
现在,我已经能够使用以短语开头的正则表达式然后 * 将 URL 重定向到默认 URL。但是,现在我只需要删除该短语的一部分。谢谢
如果a
和b
有相反的符号,则a
只能小于b
如果a
为负。
用伪代码表示:
if (a[31] XOR b[31]) {
result = a[31]
}
如果a
和b
具有相同的符号,那么显然我们不能只查看其中一个操作数的符号位。相反,我们检查是否a-b
为负。
if (!(a[31] XOR b[31])) {
result = (a-b)[31]
}
如果我们将这两者结合起来:
if (a[31] XOR b[31]) {
result = a[31]
} else {
result = (a-b)[31]
}
如果您想知道为什么我们不总是使用(a-b)[31]
,请考虑a = -2147483648
(0x80000000) 和b = 1
. 显然 -2147483648 小于 1,但是(0x80000000-1)[31]
== (0x7FFFFFFF)[31]
,即 0。所以那是行不通的。