我是靠谱客的博主 粗暴机器猫,最近开发中收集的这篇文章主要介绍基本数字电路的Verilog实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

基本数字电路的Verilog实现
1.半加器
module halfadd(x,y,s,cout);

input x;
input y;

output s;
output cout;

assign s = x^y;
assign cout = x&y;

endmodule
在这里插入图片描述半加器RTL视图
2.全加器
module fulladd(cin,x,y,s,cout);

input cin;
input x;
input y;

output s;
output cout;

assign s = xycin;
assign cout = (x&y)|(x&cin)|(y&cin);
//assign {cout,s}=x+y+cin;
endmodule
在这里插入图片描述
全加器RTL视图
3.4位全加器
module FA_4(x,y,cin,s,cout);

input [3:0] x;
input [3:0] y;
input cin;
output wire cout;

output wire [3:0] s;

assign {cout,s}=x+y+cin;

endmodule
在这里插入图片描述
4位全加器RTL视图
4.二选一
module MUXtwo_one(sel,a,b,c);

input sel,a,b;
output reg c;

//assign c=sel?a:b;
always@(*)begin
    if(sel==1'b1)
	     c=a;
	 else
	     c=b;	
end 

endmodule
在这里插入图片描述
二选一RTL视图(两种描述方式综合后视图一样)
5.四选一
module MUX4_1(
input en,
input [3:0] din,
input [1:0] sel,
output reg out
);
always@(en,din,sel) //case语句描述
begin
if(en)
out=0;
else
case(sel)
2’d0:out=din[0];
2’d1:out=din[1];
2’d2:out=din[2];
2’d3:out=din[3];
endcase
end

/*always@(en,din,sel)                         //if-else语句描述
begin
    if(en)
	     out=0;
	 else if(sel==2'd0) out=din[0];
	 else if(sel==2'd1) out=din[1];
	 else if(sel==2'd2) out=din[2];
	 else               out=din[3];
end*/

endmodule

在这里插入图片描述
四选一(case语句)RTL视图
在这里插入图片描述四选一(if-else语句)RTL视图
6.四位计数器
module jsq(
input clk,
input rst_n,
output reg [3:0] out
);

always@(posedge clk or negedge rst_n)
begin
if(rst_n==1’b0)
out<=4’d0;
else
out<=out+1’b1;
end
endmodule
在这里插入图片描述
四位计数器RTL视图
7.3-8译码器
module ym3_8(Ain,En,Yout);
input En ;
input [2:0] Ain ;
output [7:0] Yout ;
reg [7:0] Yout ;

 always@(En or Ain)
 begin
	  if(!En)
        Yout = 8'b0 ;
    else
        case (Ain)
            3'b000 : Yout = 8'b0000_0001 ;
            3'b001 : Yout = 8'b0000_0010 ;
            3'b010 : Yout = 8'b0000_0100 ;
            3'b011 : Yout = 8'b0000_1000 ;
            3'b100 : Yout = 8'b0001_0000 ;
            3'b101 : Yout = 8'b0010_0000 ;
            3'b110 : Yout = 8'b0100_0000 ;
            3'b111 : Yout = 8'b1000_0000 ;
            default : Yout = 8'b0000_0000 ;
        endcase
 end

endmodule
在这里插入图片描述
3-8译码器RTL视图

最后

以上就是粗暴机器猫为你收集整理的基本数字电路的Verilog实现的全部内容,希望文章能够帮你解决基本数字电路的Verilog实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部