传送门:
考试/ece241 2013 q12 - HDLBits (01xz.net)https://hdlbits.01xz.net/wiki/Exams/ece241_2013_q12
题目:
在这个问题中,您将为 8x1 存储器设计一个电路,其中对存储器的写入是通过移入位完成的,读取是“随机访问”,就像在典型的 RAM 中一样。
首先,创建一个带有 8 个 D 型触发器的 8 位移位寄存器,输出依次是Q[0]...Q[7]。移位寄存器输入为 S,输入首先会填充到 MSB(最高位)Q[0]。
enable控制是否移位。然后,电路具有 3 个附加输入 A、B、C 和一个输出 Z。 电路的行为应如下:当 ABC 为 000 时,Z=Q[0],当 ABC 为 001 时,Z=Q[1] 时,依此类推。您的电路应仅包含 8 位移位寄存器和多路复用器。(旁注:该电路称为 3 输入查找表 (LUT))。
module top_module (
input clk,
input enable,
input S,
input A, B, C,
output Z );
reg [7:0] shiftregister;
wire [2:0] control={A, B, C};
always@(posedge clk)
begin
if(enable)begin
shiftregister <= {S,shiftregister[7:1]};
end
else
shiftregister <=shiftregister;
end
always@(*)
begin
case(control)
3'd0:Z <= shiftregister[7];
3'd1:Z <= shiftregister[6];
3'd2:Z <= shiftregister[5];
3'd3:Z <= shiftregister[4];
3'd4:Z <= shiftregister[3];
3'd5:Z <= shiftregister[2];
3'd6:Z <= shiftregister[1];
3'd7:Z <= shiftregister[0];
default Z <= 'd0;
endcase
end
endmodule