微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教高手Verilog语言程序

请教高手Verilog语言程序

时间:10-02 整理:3721RD 点击:
module biyue(clk_48M);
input clk_48M;  //rst为全局复位信号(高电平有效),clk_48M为输入时钟信号
reg[1:0] S[79:0];   //S是输入输入出序列
reg reset;
initial
  begin
    S[0]=0;
    S[1]=0;
    S[2]=0;
    S[3]=0;
    S[4]=1;
    S[5]=1;
    S[6]=1;
    S[7]=1;
    S[8]=2;
    S[9]=2;
    S[10]=2;
    S[11]=2;
    S[12]=3;
    S[13]=3;
    S[14]=3;
    S[15]=3;  //S[0]-S[15]序列为路由矩阵的A0项
  
    S[16]=0;
    S[17]=1;
    S[18]=2;
    S[19]=3;
    S[20]=0;
    S[21]=1;
    S[22]=2;
    S[23]=3;
    S[24]=0;
    S[25]=1;
    S[26]=2;
    S[27]=3;
    S[28]=0;
    S[29]=1;
    S[30]=2;
    S[31]=3;         //S[16]-S[31]序列为路由矩阵的A1项
   
    S[48]=3;
    S[49]=3;
    S[50]=2;
    S[51]=2;
    S[52]=3;
    S[53]=1;
    S[54]=3;
    S[55]=1;
    S[56]=0;
    S[57]=0;
    S[58]=1;
    S[59]=1;
    S[60]=2;
    S[61]=2;
    S[62]=0;
    S[63]=0;   //S[48]-S[63]序列为路由矩阵的A3项
   
    S[64]=3;
    S[65]=2;
    S[66]=2;
    S[67]=3;
    S[68]=0;
    S[69]=1;
    S[70]=1;
    S[71]=3;
    S[72]=0;
    S[73]=1;
    S[74]=0;
    S[75]=2;
    S[76]=0;
    S[77]=1;
    S[78]=2;
    S[79]=3;   //S[64]-S[79]序列为路由矩阵的A4项
    reset=1;
  end
always@(posedge clk_48M)
    begin
    if(reset==1)//对"桥"矩阵进行编码,即完成对"桥"矩阵的求解,记录在S[32]-S[37]
      begin
      S[32]=0;
      S[33]=1;
      S[34]=2;
      S[35]=3;
      S[36]=0;
      S[37]=1;
      S[38]=2;
      S[39]=3;
      S[40]=0;
      S[41]=1;
      S[42]=2;
      S[43]=3;
      S[44]=0;
      S[45]=1;
      S[46]=2;
      S[47]=3;
      reset=0;
      end
end
endmodule


是Verilog语言,在quartus在运行上述程序后,发现只有S[1]~[47]有值,S[48]~S[79]没所预想的值。请教高手这是为什么?有什么办法可以补救?

你用initial语句来赋值,汗。



   ?因为在一开始时需要用到两组输入输出数组,所以用了initial语句。用它来赋值有什么特别需要注意的吗?

首先你的initial是不可综合的,要用always
只有与输出关联的reg型变量的值会被保留,否则会被优化掉。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top