input clk,
input rst_n,
input direction,
output reg [7:0] deng
)
integer i
reg on_off
always @(posedge clk or negedge rst_n) begin
if(rst_n==1'b0)
on_off<= 8'b0
else if((&deng==1'b1)||(|deng==1'b0))
on_off <= ~on_off
end
always @(posedge clk or negedge rst_n) begin
if(rst_n==1'b0)
deng <= 8'b0
else begin
case(direction)
0:begin
deng[0] <= on_off
for (i=0i<7i++)
deng[i+1]<=deng[i]
end
1:begin
deng[7] <= on_off
for (i=7i>0i++)
deng[i-1]<=deng[i]
end
endcase
end
end
endmodule
右跑为例,依次如下
00000000
10000000
11000000
11100000
。。。
11111111
01111111
00111111
00011111
。。。
00000000
direction接开关,deng接8位led灯
不需要分析什么程序。。你只要记住,FPGA里面的输入输出都是以FPGA的芯片为第一人称来讲的。只要记住就可以了。。
通俗讲就是芯片内部往外输出信号就是output,外面的信号往芯片内部输入就是input。
举个例子,你的主时钟50MHZ,是在芯片外面的晶振把信号输入进来,所以clk就是input。
外围的ic器件的分析都是一样的。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)