使用UDP编写一个四选一数据选择器

首先,说说今天重新安装modelsim仿真软件的心得吧,作为一个学渣,今天终于弄清楚,什么是添加环境变量,好吧,真的好学渣。

下面就要开始说说使用UDP编写一个四选一数据选择器的代码,以及,所犯的错误吧:

1、正确代码:

(1)UDP模块:

primitive mux4_to_1(out,i1,i2,i3,i4,s1,s2);

//这个地方不得不说:在声明端口列表的时候,第一个必定是输出端口

//起初我声明为:primitive mux4_to_1(i1,i2,i3,i4,s1,s2,out);结果出现如下错误:

使用UDP编写一个四选一数据选择器_第1张图片
  output out;
  input i1,i2,i3,i4,s1,s2;
  
  
  table
  1 ? ? ? 0 0 : 1;
  0 ? ? ? 0 0 : 0;
  ? 1 ? ? 0 1 : 1;
  ? 0 ? ? 0 1 : 0;
  ? ? 1 ? 1 0 : 1;
  ? ? 0 ? 1 0 : 0;
  ? ? ? 1 1 1 : 1;
  ? ? ? 0 1 1 : 0;
 endtable
 
endprimitive

(2),仿真程序:

`include "mux4_to_1.v"


module stimulus;
  reg IN0,IN1,IN2,IN3;
  reg s0,s1;
  
  wire Out;
  
  mux4_to_1 m(Out,IN0,IN1,IN2,IN3,s0,s1);
  
  initial
  begin
    IN0=1;IN1=0;IN2=1;IN3=0;
    
    s0=0;s1=0;
    
    #10 s0=0;s1=1;
    
    #10 s0=1;s1=0;
    
    #10 s0=1;s1=1;
    

//特别注意initial中添加延时,起初没有添加,直接写成: 

s0=0;s1=0;

s0=0;s1=1;

s0=1;s1=0;
s0=1;s1=1;

//这种方式仿真出的波形如下图:这些语句在仿真0时刻顺序执行,几乎没有延时的将s0,s1赋值为了1,1,因此仿真波形中只出现s0=1;s1=1;的波形使用UDP编写一个四选一数据选择器_第2张图片


  end
  
endmodule

(3)最终正确的仿真波形:

使用UDP编写一个四选一数据选择器_第3张图片


你可能感兴趣的:(学习日志)