一、流水灯实验;
一、FPGA的工作是基于时钟的,语言中几乎每处都用到了always@(posedge clk),意思是clk
上升沿触发工作,之后执行其下的语句。
二、<=非阻塞语言,并行方式
三、FPGA基本工作原理基于LUT查表,查表这也是一种特别重要的编程思想,下面的流水灯实现(二)差不多就是这种思想。
(1)实现(一) module liushuideng(
input clk, input rst, output reg[7:0] led=8'b00000001; );
reg[31:0] cnt=0; cnt<=0;
end else begin
if(cnt==32'd100000000) //假如时钟为100MHz 那么32‘d100000000代表1秒钟 begin
led<={led[6:0],led[7]}; //高电平代表点亮灯,实现循环左移位 cnt<=0; end else begin
cnt<=cnt+1; end end
(2)实现(二)
module liushuideng(
input clk, input rst, output reg[7:0] led=8'b00000001; );
reg[31:0] cnt=0; cnt<=0;
end else begin
if(cnt==32'd800000000) begin cnt<=0; //cnt==32'd800000000时 重新复位为0 end else begin
cnt<=cnt+1;//每当时钟沿到来时 cnt自加1 end case(cnt)
32'd800000000:led<=8'b10000000; //cnt为800000000时led==8‘d10000000(8代表位宽 //缺省为最大位宽)
32'd700000000:led<=8'b01000000;
32'd600000000:led<=8'b00100000; 32'd500000000:led<=8'b00010000;
32'd400000000:led<=8'b00001000;
32'd300000000:led<=8'b00000100;
32'd200000000:led<=8'b00000010;
32'd100000000:led<=8'b00000001;
default:; end
end |
|
来自: 小小锐DarkRose > 《verilog》