|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 chen5135053 于 2011-5-6 10:52 编辑
各位大侠,我想实现一个移位寄存器,输入输出关系如下:
input: data_in: 1 2 3 4 5 6 7 8 9
output: line2 : x 1 2 3 4 5 6 7 8 9
output: line1 : x x x x 1 2 3 4 5 6 7 8 9
output: line0 : x x x x x x x 1 2 3 4 5 6 7 8 9
代码是有问题的帮忙看一下,谢谢了
module linebuffer(reset,clk,data_in,line2,line1,line0,count);
input[7:0] data_in;
input clk;
input reset;
output[7:0] line1,line0;
output[3:0] count;
reg[7:0] data[9:0];//用到10个寄存器方便存储之前的数据
reg[3:0] count;
reg[7:0] line2,line1,line0;
always@(posedge clk or posedge reset)
begin
if(reset)
begin
data[count]<=0;
count=0;
end
else
begin
count<=count+1;
line2<=data_in;
end
end
always@(posedge clk)
begin
case(count)
4'h01:shift_one;
4'h02:shift_one;
4'h03:begin
shift_one;
shift_three;
end
4'h04:shift_one;
4'h05:shift_one;
4'h06:begin
shift_one;
shift_three;
end
4'h07:shift_one;
4'h08:shift_one;
4'h09:begin
shift_one;
shift_three;
end
default:count<=4'b0001;
endcase
end
task shift_three;
begin
line1<=data[count-2];line1<=data[count-1];line1<=data[count];
line0<=data[count-2];line0<=data[count-1];line0<=data[count];
end
endtask
task shift_one;
data[count]<=data_in;
endtask
endmodule |
|