基于至简设计法的数字时钟设计
fen_s <= 0;
end
else begin
fen_s <= fen_s + 1;
end
end
end
assign add_fen_s = end_fen_g;
assign end_fen_s = add_fen_s && fen_s == 6-1;
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
shi_g <= 0;
end
else if(add_shi_g)begin
if(end_shi_g)begin
shi_g <= 0;
end
else begin
shi_g <= shi_g + 1;
end
end
end
assign add_shi_g = end_fen_s;
assign end_shi_g = add_shi_g && shi_g ==x-1;
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
shi_s <= 0;
end
else if(add_shi_s)begin
if(end_shi_s)begin
shi_s <= 0;
end
else begin
shi_s <= shi_s + 1;
end
end
end
assign add_shi_s = end_shi_g;
assign end_shi_s = add_shi_s && shi_s == 3-1;
always@(*)begin
if(shi_s==2)
x =4;
else
x =10;
end
细心的读者可以发现,上面每段计数器格式都非常相似。没错,这就是明德扬设计的技巧。我们设计的这套模板,基本上可以应用于任何场合,任何时候读者只考虑两个因素就够了,不会出现丢三落四的情况,而且每次只需要考虑一个因素,保证能做出最优的设计。
如果你还未发现这代码优秀的地方,建议你百度下数字时钟的代码,好好比一比,特别是好好想想我们的设计思路,明德扬是有方法有步骤、可以做到一次性设计对,而他们的则是想到哪写
- 基于FPGA的片上系统的无线保密通信终端(02-16)
- 基于Virtex-5 FPGA设计Gbps无线通信基站(05-12)
- 基于FPGA的DVI/HDMI接口实现(05-13)
- 基于ARM的嵌入式系统中从串配置FPGA的实现(06-09)
- 采用EEPROM对大容量FPGA芯片数据实现串行加载(03-18)
- 赛灵思:可编程逻辑不仅已是大势所趋,而且势不可挡(07-24)