大佬教程收集整理的这篇文章主要介绍了用Verilog写一个74LS160,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
5-10 用Verilog设计一个功能类似74ls160的计数器。
(1)解题思路
设计一个74ls160,需要知道它的功能表,以及原理图
(2)核心模块代码
@H_403_4@module fidv1 (rd,clk,et,load,datain,dataout,cout,ep);input rd,ep;
input [3:0] datain;
output [3:0] dataout ;
output cout;
reg cout;
reg [3:0] q1;
wire rd;
always @ (posedge clk or negedge rd)
if (rd==0) begin q1<=4‘d0; end//rd=0时清零
else begin
if(clk==1&load==0) q1=datain;
else if(clk==1&load==1)
begin
if(ep==1&et==1&q1<4‘d10) //开始计数
begin q1=q1+1;cout=0;
end
else if((ep&et)==0) begin q1=q1;cout=0;end//保持不变
else if(q1==4‘d10) cout=1;//进位输出
end
end
assign dataout =q1;
endmodule
(3)测试模块代码
`timescale 1 ps/ 1 ps
@H_403_4@module fidv1_ll();// general purpose registers
reg eachvec;
// test vector input registers
reg clk;
reg [3:0] datain;
reg ep;
reg et;
reg load;
reg rd;
wire cout;
wire [3:0] dataout;
fidv1 i1 (
// port map - connection between master ports and signals/registers
.clk(clk),
.cout(cout),
.datain(datain),
.dataout(dataout),
.ep(ep),
.et(et),
.load(load),
.rd(rd)
always #2 clk=~clk;
#0 clk=0;
#0 rd=1;
#0 datain=4‘d2;
#2 load=0;
#2 ep=1;
#0 et=1;
#12 load=1;
#16 ep=0;
#0 et=0;
#8 rd=0;
#2 rd=1;
#6 datain=4‘d3;
#5 load=0;
$display("dataout=%d,datain=%d",datain);
endmodule
(4)RTL View的网表图
以上是大佬教程为你收集整理的用Verilog写一个74LS160全部内容,希望文章能够帮你解决用Verilog写一个74LS160所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。