上手verilog基础代码与modelsim仿真(一)

上手verilog基础代码与modelsim仿真(一)

1.点亮led灯

输入输出波形图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

verilog代码:
module led
(
    input wire      key_in,
    output wire     led_out
);
assign  led_out = key_in;



endmodule

2.二选一Mux

输入输出波形图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DBchy6pR-1670394675007)(C:\Users\zhangbo\AppData\Roaming\Typora\typora-user-images\image-20221207105059757.png)]

verilog代码:
module mux2_1
(
    input wire  [0:0] in_1,  
    input wire  [0:0] in_2,  //input signal
    input wire  [0:0] sel,    //select signal
    
    output reg        out   //output signal
    
    
);

always@(sel,in_1,in_2) //or *
    if (sel==1'b1)
        out = in_1;
    else
        out = in_2;
    
endmodule

3. 3-8译码器

输入输出波形图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TRMQwLiK-1670394675008)(C:\Users\zhangbo\AppData\Roaming\Typora\typora-user-images\image-20221207105439585.png)]

verilog代码:
完成译码功能:
module  decoder(
    input   wire    in_1,
    input   wire    in_2,
     input  wire    in_3,
    output  reg    [7:0]   out
    
);

always@(*)
    case({in_1,in_2,in_3})
    
        3'b000: out=8'b0000_0001;
        3'b000:	out=8'b0000_0001;
        3'b001:	out=8'b0000_0010;
        3'b010:	out=8'b0000_0100;	
        3'b011:	out=8'b0000_1000;
        3'b100:	out=8'b0001_0000;	
        3'b101:	out=8'b0010_0000;	
        3'b110:	out=8'b0100_1000;	
        3'b111:	out=8'b1000_0000;	
        default:out=8'b0000_0001;
    endcase



endmodule
仿真逻辑文件:
`timescale 1ns/1ns

module td_decoder();
reg     in_1;
reg     in_2;
reg     in_3;

wire    [7:0]   out;
initial 
    begin
        in_1 <= 1'b0;
        in_2 <= 1'b0 ;
        in_3 <= 1'b0 ;          
    
    end


always  #10 in_1 <= {$random} % 2;
always  #10 in_2 <= {$random} % 2;
always  #10 in_3 <= {$random} % 2;

initial
    begin
        $timeformat(-9,0,"ns",6);
        $monitor("@time %t:in_1=%b,in_2=%b,in_3=%b,out=%b",$time,in_1,in_2,in_3,out);
    end


 decoder    decoder_inst
 (
   .in_1(in_1),
   .in_2(in_2),
   .in_3(in_3),
   .out (out)
    
);



endmodule
仿真波形图:

img

4.半加器

输入输出波形图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tlbxWZ2r-1670394675009)(C:\Users\zhangbo\AppData\Roaming\Typora\typora-user-images\image-20221207142639406.png)]

verilog完成半加器功能
 module half_adder(
    
    input wire      in_1,
    input wire      in_2,
    output wire     sum,
    output  wire    count
 
 
 
 );
 
 assign     {count,sum} = in_1 + in_2;
 
 endmodule
仿真逻辑文件
 module half_adder(
    
    input wire      in_1,
    input wire      in_2,
    output wire     sum,
    output  wire    count
 
 
 
 );
 
 assign     {count,sum} = in_1 + in_2;
 
 endmodule
仿真波形图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X2fqUEH5-1670394675010)(C:\Users\zhangbo\AppData\Roaming\Typora\typora-user-images\image-20221207142943125.png)]

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

保温杯配红牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值