我是靠谱客的博主 糊涂皮皮虾,最近开发中收集的这篇文章主要介绍常用组合电路模块设计(Verilog)——头歌平台作业,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本实训帮助大家掌握常用组合逻辑功能模块的Verilog编程设计,包括多路选择器、译码器、优先编码器、比较器、数码驱动器、ALU。

第1关:4选1多路选择器设计

本关任务:使用Verilog HDL描述4选1多路选择器并完成在线评测。

module mux4to1 (W, S, f);
	input [0:3] W;	//4路数据输入
	input [1:0] S;	//选择信号
	output reg f;	
	always @(S or W) //请在括号中填入敏感信号列表
		//请用过程语句case描述选择器
    begin
        case({S[1],S[0]})
            2'b00:f<=W[0];
            2'b01:f<=W[1];
            2'b10:f<=W[2];
            2'b11:f<=W[3];
            default: f<=1'bx;
        endcase
    end
endmodule 

第2关:3-8译码器设计

本关任务:使用Verilog HDL描述3-8译码器,并完成在线评测。

module dec3to8 (W, En, Y);
	input [2:0] W;
	input En;
	output reg [0:7] Y;
	always @(W, En)
        //功能描述
    begin
        if(En==1)
        begin
            if(W==3'b000) Y<=8'b1000_0000;
            else if(W==3'b001) Y<=8'b0100_0000;
            else if(W==3'b010) Y<=8'b0010_0000;
            else if(W==3'b011) Y<=8'b0001_0000;
            else if(W==3'b100) Y<=8'b0000_1000;
            else if(W==3'b101) Y<=8'b0000_0100;
            else if(W==3'b110) Y<=8'b0000_0010;
            else Y<=8'b0000_0001;
        end 
        else
            Y<=8'b0000_0000;
   end    
endmodule

 

第3关:4-2优先编码器设计

本关任务:使用Verilog HDL描述4-2优先编码器,并完成在线评测。

module priority4to2 (W, Y, z);
	input [3:0] W;
	output reg [1:0] Y;
	output reg z;
	always @(W)
	//功能描述
        begin
            if(W==4'b0000) 
            begin
                Y<=2'bxx;
                z<=0;
            end
            else if(W==4'b0001)
            begin
                Y<=2'b00;
                z<=1;
            end
            else if(W==4'b0010||W==4'b0011)
            begin
                Y<=2'b01;
                z<=1;
            end
            else if(W==4'b0100||W==4'b0101||W==4'b0110||W==4'b0111)
            begin
                Y<=2'b10;
                z<=1;
            end
            else
            begin
                Y<=2'b11;
                z<=1;
            end
        end    
endmodule

第4关:4位无符号比较器设计

本关任务:使用Verilog HDL描述4位无符号比较器并完成在线评测。

module compare4 (A, B, eq, gt, lt);
	input [3:0] A, B;
	output reg eq, gt, lt;
		
	always @(A, B)
	    //功能描述
    begin
        if(A>B)
            {eq,gt,lt}<=3'b010;
        else if(A<B)
            {eq,gt,lt}<=3'b001;
        else
            {eq,gt,lt}<=3'b100;
    end		
endmodule

第5关:数码驱动器设计

本关任务:实验Verilog HDL描述7段数码驱动器电路,并完成在线评测。

module seg7 (hex, leds);
	input [3:0] hex;
	output reg [1:7] leds;
	always @(hex)
		//功能描述
    begin
    case(hex)
    4'b0000:leds=7'b1111110;
    4'b0001:leds=7'b0110000;
    4'b0010:leds=7'b1101101;
    4'b0011:leds=7'b1111001;
    4'b0100:leds=7'b0110011;
    4'b0101:leds=7'b1011011;
    4'b0110:leds=7'b1011111;
    4'b0111:leds=7'b1110000;
    4'b1000:leds=7'b1111111;
    4'b1001:leds=7'b1111011;
    4'b1010:leds=7'b1110111;
    4'b1011:leds=7'b0011111;
    4'b1100:leds=7'b1001110;
    4'b1101:leds=7'b0111101;
    4'b1110:leds=7'b1001111;
    4'b1111:leds=7'b1000111;
    endcase
    end
endmodule

第6关:ALU设计

本关任务:用Verilog描述74-381ALU,并完成在线评测。

// 74-381 ALU
module alu (S, A, B, F);
	input [2:0] S;
	input [3:0] A, B;
	output reg [3:0] F;

	always @(S, A, B)
		//功能描述
    begin
    case(S)
        3'b000:F=4'b0000;
        3'b001:F=B-A;
        3'b010:F=A-B;
        3'b011:F=A+B;
        3'b100:F=A^B;
        3'b101:F=A|B;
        3'b110:F=A&B;
        3'b111:F=4'b1111;
    endcase
    end
endmodule

最后

以上就是糊涂皮皮虾为你收集整理的常用组合电路模块设计(Verilog)——头歌平台作业的全部内容,希望文章能够帮你解决常用组合电路模块设计(Verilog)——头歌平台作业所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部