四位移位寄存器经过几个cp脉冲后,四位数码恰好全部移入寄存器
一个四位串行数据,输入四位移位寄存器,转换为4位并行数据输出,共需要 4 个移位脉冲。
时钟脉冲频率为1KHz, 4 个移位脉冲,那就是需要 4 ms。
一个四位串行数据,输入四位移位寄存器,时钟脉冲频率为1KHz,经过多长时间可转换为4位并行数据输出
上面几位的回答都是正确的。
时钟周期=1/频率=1/1k=1/1000=0.001秒=1ms
将4位数移入移位寄存器的时间=4个周期*1ms=4ms
答案是4ms
写出4位串入、串出移位寄存器的verilogHDL描述(要准确答案,正确的话,我把所分都给你!)
1. shift reg
module shift_4(clk,rst,in,out)
input clk,rst;
input in;
output out;
wire out;
reg [3:0] shiftreg;
always@(posedge clk or negedge rst) // 异步清零
if(!rst)
shiftreg<=0;
else begin
shiftreg[0]<=in;
shiftreg[1]<=shiftreg[0];
shiftreg[2]<=shiftreg[1];
shiftreg[3]<=shiftreg[2];
end
assign out=shiftreg[3];
endmodule
2.ALU
`define ADD 2'h0
`define SUB 2'h1
`define AND 2'h2
`define OR 2'h3
module ALU(a,b,f,s)
parameter N=16;
input [N-1:0] a,b;
input [1:0] f;
output [N-1:0] s;
reg [N-1:0] s;
always@(a or b or f)
case(f)
`ADD: s<=a+b;
`SUB: s<=a-b;
`AND: s<=a & b;
`OR: s<=a | b;
default: s<=s;
endcase
endmodule
一个四位移位寄存器,现态为0101,如果串行输入始终为0,则经过4个移位脉冲后,寄存器的内容为(
串行输入始终为0,4个移位脉冲后,移进去4个0,应为 A,0000。
4位多功能移位寄存器VHDL程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity yw is
port(
data:in std_logic_vector(3 downto 0);--待置数
clk:in std_logic;
Sa :in std_logic;
Sb :in std_logic;
shift_Bit: in std_logic; --要移入的数据
qout :buffer std_logic_vector(3 downto 0));
end yw;
architecture behave of yw is
signed mode : std_logic_vector(1 downto 0);
begin
mode <= Sa & Sb;
process(clk)
begin
if(clk'event and clk='1')then
case mode is
when10=>qout<=0000; --清零
when11=>qout<=data; --置数
when00=>qout<=shift_Bit & qout(3 downto 1); --右移
when01=>qout<=qout(2 downto 0) &shift_Bit ;--左移
when others=>null;
end case;
else
qout<=qout
end if;
end process;
end behave;
4位多功能移位寄存器VHDL程序、4位移位寄存器,就介绍到这里啦!感谢大家的阅读!希望能够对大家有所帮助!