Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
模式生成器(verilog)_Verilog - Fatal编程技术网

模式生成器(verilog)

模式生成器(verilog),verilog,Verilog,我需要用Verilog代码编写一个序列电路,作为一个模式生成器,它可以逐个字符地生成Firstname(空格)Lastname(空格),而不是二进制计数。我需要显示至少两个周期的模式序列 这是示例输出: 我知道我的程序存在的问题在CoderMod模块中,但我不确定问题在哪里 谢谢你的帮助 //pattern.v module TestMod; reg CLK; wire [0:11] Q; wire [6:0] ascii; initial begin

我需要用Verilog代码编写一个序列电路,作为一个模式生成器,它可以逐个字符地生成Firstname(空格)Lastname(空格),而不是二进制计数。我需要显示至少两个周期的模式序列

这是示例输出:

我知道我的程序存在的问题在CoderMod模块中,但我不确定问题在哪里

谢谢你的帮助

//pattern.v

module TestMod;
   reg CLK;
   wire [0:11] Q;
   wire [6:0] ascii;
   initial begin 
      #1;
      forever begin 
        CLK=0;
        #1;
        CLK=1;
        #1;
      end

   end

   RippleMod my_ripple(CLK, Q);
   CoderMod my_coder(Q, ascii);
   initial #27 $finish;
   initial begin
      $display("Time   CLK   Q                      Name");
      $monitor("%4d    %b    %b    %c  %x  %b", $time, CLK, Q, ascii, ascii, ascii);
   end
endmodule

module CoderMod(Q, ascii); 
   input [0:13]Q;
   output [13:0] ascii;
   assign ascii[0] = "F";
   assign ascii[1] = "i";
   assign ascii[2] = "r";
   assign ascii[3] = "s";
   assign ascii[4] = "t";
   assign ascii[5] = " ";
   assign ascii[6] = "L";
   assign ascii[7] = "a";
   assign ascii[8] = "s";
   assign ascii[9] = "t";
   assign ascii[10] = "n";
   assign ascii[11] = "a";
   assign ascii[12] = "m";
   assign ascii[13] = "e";

   or(ascii[0], Q[13]);
   or(ascii[1], Q[12]);
   or(ascii[2], Q[11]);
   or(ascii[3], Q[10]);
   or(ascii[4], Q[9]);
   or(ascii[5], Q[8]);
   or(ascii[6], Q[7]);
   or(ascii[7], Q[6]);
   or(ascii[8], Q[5]);
   or(ascii[9], Q[4]);
   or(ascii[10], Q[3]);
   or(ascii[11], Q[2]);
   or(ascii[12], Q[1]);
   or(ascii[13], Q[0]);

endmodule

module RippleMod(CLK, Q);
   input CLK;
   output [0:15]Q;
   reg [0:15]Q;
   always @(posedge CLK) begin
      Q[0] <= Q[15]; 
      Q[1] <= Q[0];
      Q[2] <= Q[1];
      Q[3] <= Q[2];
      Q[4] <= Q[3];
      Q[5] <= Q[4];
      Q[6] <= Q[5];
      Q[7] <= Q[6];
      Q[8] <= Q[7];
      Q[9] <= Q[8];
      Q[10] <= Q[9];
      Q[11] <= Q[10];
      Q[12] <= Q[11];
      Q[13] <= Q[12];
      Q[14] <= Q[13];
      Q[15] <= Q[14];
   end

   initial begin 
      Q[0] = 1;
      Q[1] = 0;
      Q[2] = 0;
      Q[3] = 0;
      Q[4] = 0;
      Q[5] = 0;
      Q[6] = 0;
      Q[7] = 0;
      Q[8] = 0;
      Q[9] = 0;
      Q[10] = 0;
      Q[11] = 0;
      Q[12] = 0;
      Q[13] = 0;
      Q[14] = 0;
      Q[15] = 0;
   end
endmodule
//pattern.v
模块TestMod;
注册时钟;
导线[0:11]Q;
有线[6:0]ascii码;
初始开始
#1;
永远开始
CLK=0;
#1;
CLK=1;
#1;
结束
结束
RippleMod my_ripple(CLK,Q);
CoderMod my_编码器(Q,ascii);
初始#27美元完成;
初始开始
$display(“时间时钟Q名称”);
$monitor(“%4d%b%b%c%x%b”,$time,CLK,Q,ascii,ascii,ascii);
结束
端模
模块CoderMod(Q,ascii);
输入[0:13]Q;
输出[13:0]ascii码;
指定ascii[0]=“F”;
分配ascii[1]=“i”;
指定ascii[2]=“r”;
指定ascii[3]=“s”;
分配ascii[4]=“t”;
指定ascii[5]=“”;
指定ascii[6]=“L”;
分配ascii[7]=“a”;
指定ascii[8]=“s”;
指定ascii[9]=“t”;
指定ascii[10]=“n”;
指定ascii[11]=“a”;
指定ascii[12]=“m”;
指定ascii[13]=“e”;
或(ascii[0],Q[13]);
或(ascii[1],Q[12]);
或(ascii[2],Q[11]);
或(ascii[3],Q[10]);
或(ascii[4],Q[9]);
或(ascii[5],Q[8]);
或(ascii[6],Q[7]);
或(ascii[7],Q[6]);
或(ascii[8],Q[5]);
或(ascii[9],Q[4]);
或(ascii[10],Q[3]);
或(ascii[11],Q[2]);
或(ascii[12],Q[1]);
或(ascii[13],Q[0]);
端模
模块RippleMod(时钟,Q);
输入时钟;
输出[0:15]Q;
reg[0:15]Q;
始终@(posedge CLK)开始

Q[0]您的程序实际上存在多个问题。i、 e.您将ascii数组声明为
wire[6:0]ascii
但稍后您将其作为
CoderMod my_编码器(Q,ascii)连接到模块其中它是宽度为14的输出端口。您还可以将8位字符分配为一位ascii,如下所示:
ascii[1]=“i”

作为提示,您需要将其声明为

 wire [6:0] ascii [13:0];

你应该能搞清剩下的

为什么
Q
的范围定义为
[0:11]
[0:13]
[0:15]
?为什么要将8位值指定给
ascii
索引的单个位?为什么要将
ascii
的每一位赋值两次(
assign
)?