Verilog新手一个,刚刚练习写了一个程序,在仿真的时候老出问题,请大神帮忙纠正,不胜感激。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Verilog新手一个,刚刚练习写了一个程序,在仿真的时候老出问题,请大神帮忙纠正,不胜感激。相关的知识,希望对你有一定的参考价值。

inver.v的程序内容如下;

module inver(r,b);
input[1:0] b;
output[1:0] r;
reg[1:0] r;
wire[1:0] b;

always@(b)begin
case(b)
2'b00: r<=2'b01;
2'b01: r<=2'b10;
2'b10: r<=2'b11;
2'b11: r<=2'b00;
default:r<=2'b00;
endcase
end
endmodule

inver_tb.v的程序如下:
`timescale 1 ns/1 ns
`include "inver.v"
module inver_tb;
wire[1:0] t;
reg[1:0] k;

inver UUT(.r(k),.b(t));
initial
begin
t=2'b00;
end
$display("t=2'b%b,k=2'b%b",t,k);
endmodule

modelsim的仿真弹出的提示是:near "$display": syntax error, unexpected SYSTEM_IDENTIFIER,调试了很久也没有成功,希望各位大神不吝赐教,谢谢。

参考技术A `timescale 1 ns/1 ns
`include "inver.v"
module inver_tb;
wire[1:0] t;
reg[1:0] k;
inver UUT(.r(t),.b(k));
initial
begin
k=2'b00;
#10 k=2'b01;
#10 k=2'b10;
#10 k=2'b11;
$display("t=2'b%b,k=2'b%b",t,k);
end
endmodule

display放到end里面,此外你注意一下端口顺序,你定义反了,进-出,出-进追问

经过修改之后,语法上没有问题,你真的好厉害。可是逻辑上有一些小问题,你还愿意帮我一下吗?

本回答被提问者和网友采纳
参考技术B module inver_tb;是不是要加括号?

C# 适合新手编程的基础练习(附答案)

题目来自百度 随便找了几个简单的写了一下 对刚刚学习的来说练习还是非常不错的

 int n = Convert.ToInt32(Console.ReadLine());
  
  if (n < 0)
  {
       
 Console.WriteLine("你输入了:" + (n.ToString().Length-1) + "位数");
 }
else
  {
     Console.WriteLine("你输入了:" + n.ToString().Length + "位数");
 }
 Console.Read();

运行结果:


static void Main(string[] args)
        {

            double a = Convert.ToDouble(Console.ReadLine());
            double b = Convert.ToDouble(Console.ReadLine());
            double c = Convert.ToDouble(Console.ReadLine());           
            Console.WriteLine("最大值是:"+sum(a,b,c));
            Console.Read();
        }

        public static double sum(double a ,double b ,double  c)
        {
            double max = Math.Max(a,b); ;
            if (max < c)
            {
                max = c;
            }              
          return max;
        }

运行结果:


输入字符串,然后逆序输出

 Console.WriteLine("随便输入一串字符");
            string str = Console.ReadLine();
            for (int i = str.Length - 1; i >=0 ; i--)
            {
                Console.Write(str[i]);
            }        
            Console.Read();

运行结果:


提示用户输入年龄,如果大于等于18,则告知用户可以查看,如果小于10岁,则告知不允许查看,如果大于等于10岁并且小于18,则提示用户是否继续查看(yes、no),如果输入的是yes则提示用户请查看,否则提示"退出,你放弃查看"。

Console.WriteLine("请输入年龄");
   int age = Convert.ToInt32(Console.ReadLine());
   if (age >= 18)
    {
   Console.WriteLine("你可以查看");
   }
 else if(age<10){
    Console.WriteLine("你不可以查看");
     return;
    }

   if (age >= 10 && age < 18)
     {
     Console.WriteLine("是否继续查看  yes no");
   string str = Console.ReadLine();
    switch (str)
     { case "yes":
            Console.WriteLine("请查看");
           break;
       case "no":
           Console.WriteLine("退出,你放弃查看");
          break;
          default:
       Console.WriteLine("输入有误");
     break;
                }
                        
            }
    Console.ReadKey();

运行结果:


两个变量相互交换值不用中间变量

int a=10;
int b=20;
a=a+b;
b=a-b;
a=a-b;

运行结果:


 int[] n = new int[4];
            n[0] = Convert.ToInt32(Console.ReadLine());
            n[1] = Convert.ToInt32(Console.ReadLine());
            n[2] = Convert.ToInt32(Console.ReadLine());
            n[3] = Convert.ToInt32(Console.ReadLine());
            int a = 0;
            int b = n[1] + n[2];
                for (int i = 0; i <= n.Length - 1; i++)       
                a += n[i];         
            Console.WriteLine("四个元素平均值是:"+a/4);
            Console.WriteLine("2个元素平均值是:" + b/2);
            Console.Read();

运行结果:


 int[] n = new int[12];
   Random r = new Random();
 for (int i = 0; i <= n.Length - 1; i++)
     {
     n[i] = r.Next(0,100);           
  }

  for (int i = n.Length - 1; i >= 0; i--)
  {
   Console.WriteLine(n[i]);
  }
   Console.Read();

运行效果:


纯手打,点个赞呗~

以上是关于Verilog新手一个,刚刚练习写了一个程序,在仿真的时候老出问题,请大神帮忙纠正,不胜感激。的主要内容,如果未能解决你的问题,请参考以下文章

C# 适合新手编程的基础练习(附答案)

写了个verilog流水灯程序,quartus一直提示子模块重复定义。

第一个Verilog程序:通用加法器

新手MFC学习之Socket练习

verilog 怎么对 寄存器组 赋初值

verilog中寄存器的初始值问题,