经验测试表明,在InnoDB表上有这样的查询:
SELECT indexed_column FROM tab ORDER BY indexes_column ASC;
比与ORDER BY ... DESC对应的更快。为什么是这种情况?
注意:我用MySQL 5.7和5.6做了测试。因此,这与8.0中的升序索引无关。
以下代码-1和代码-2在Verilog中是等效的,这是真的吗?
代码1
always@(posedge Clock or B or C)
begin
if (B)
A <= 0;
else if (C)
A <= 1;
end
代码2
always@(posedge Clock or B or C)
begin
if (B)
A <= 0;
else if (C)
A <= 1;
else
A <= A;
end
同样的事情在VHDL中也是如此吗?
代码-3
process
我有个关于VHDL的问题。下面的代码是为一个+/- 2度的恒温器,它的工作和模拟很好,但我有一些无法解释的警告,其中一个特别是困扰我。
LIBRARY IEEE;
USE IEEE.std_logic_1164.all, IEEE.std_logic_arith.all;
ENTITY thermo IS
PORT (
Tset, Tact: in integer;
Heaton: out std_logic
);
END ENTITY thermo;
ARCHITECTURE sequenti
有时我在Xilinx中收到警告:
锁存可以从不完整的大小写或if语句中生成。我们不建议在FPGA/CPLD设计中使用锁存器,因为它们可能导致计时问题。
但是,如果我使用rising_edge()函数,那么即使我有一个不完整的情况,也没有任何警告,例如:
process (clk, rst)
begin
if (rst = '1') then
test <= '0';
elsif (rising_edge(clk)) then
test <= '1';
end if;
我已经用VHDL写了一个简单的RS锁存器,并试图用ISE来综合它。合成器增加了一个D触发器,其中D输入接地,我的(S)et和(R)eset输入被视为预置和清除输入。我以为只会看到NAND门。为什么在不需要触发器的情况下添加触发器?另外,为什么D输入连接到地?
entity rs is
Port ( r : in STD_LOGIC;
s : in STD_LOGIC;
q : inout STD_LOGIC);
end rs;
architecture Behavioral of rs is
begin
process( r, s )
begin
假设我有以下状态机:
....
if state_a then
output_a <= '0';
next_state <= state_b;
elsif state_b then
output_a < '0';
if cond then
output_b <= '1';
next_state <= state_a;
else
next_state <= state_b;
end if;
end if;
....
我对语句always_ff和always_latch的用法感到困惑。前者将被用作:
always_ff @ (posedge clk)
begin
a <= b;
end
而后者:
always_latch
begin
a <= b;
end
第一个被时钟的正边缘激活,再加上非阻塞分配,产生一个FF。
显然,always_latch被认为是一个锁存器,但是为什么要使用非阻塞分配呢?
使用带有阻塞分配的always_comb不是更好吗?