学习FPGA延时——移位

1、延时代码如下:
module shift
(
din,clk,rst_n,
dout,delay_out,out
);

input din; //串行数据输入
input clk; //控制时钟
input rst_n; //复位信号,低电平有效
output reg [DELAY_PERIOD-1:0] dout;
output reg [DELAY_PERIOD-1:0] delay_out;
output reg out;

parameter DELAY_PERIOD = 4;

//右移 ,补高位
always @(posedge clk,negedge rst_n)begin
if(!rst_n) //异步复位
dout <= 4’d0;
else
begin
dout <= dout >>1; //寄存器内容右移一位
dout[DELAY_PERIOD-1] <= din; //输入数据补充最高位
end
end

//左移 ,补低位
always @(posedge clk,negedge rst_n)begin
if(!rst_n)
delay_out <= 4’d0;
else
begin
delay_out <= {delay_out[DELAY_PERIOD-2:0],din};
end
end

//延时
always @(posedge clk,negedge rst_n) begin
if(!rst_n)
out=1’b0;
else if (delay_out == {DELAY_PERIOD{1’b1}})
out <= 1’b1;
else
out <= 1’b0;
end

endmodule

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值