• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

FPGA组合模块数值传递语句?

guyuemao 2017-05-03 浏览量:858

FPGA组合模块数值传递语句?

如: assign Number_Data = Output_Data[3:0]


看到例程都是先调用模块,这些赋值语句必须写在最后一行吗?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • // assign 语句的用法  
    module  test;  
      
      
    // 1.作为信号量输出,通过寄存器连续赋值  
    output [3:0] oLED;        // 默认是wire类型,需要持续输出才行  
      
      
    //internal signal  
    reg [3:0] sr_LED; //用独热码表示LED亮灯位置。  
      
      
    assign  oLED[3:0] = ~sr_LED[3:0]; //向LED灯接口输出信号。  
      
      
      
      
    //2.作为信号量输出,通过寄存器拼接数据位实现。  
       
    output [15: 0] oSI_DATA;  
      
      
    //internal signal  
      reg [ 3: 0] s_HEX;  
      reg [ 7: 0] s_SEGBINARY; // s_SEGBINARY[2] should be the DOT  
      reg [ 3: 0] s_SEG_SEL;  
      
      
    assign oSI_DATA = {iLED_SEL,s_SEG_SEL,s_SEGBINARY};  
      
      
      
      
    //3.作为信号量输出,通过判断条件,赋值给信号  
       
    output[ 1: 0]   oSEG_STATE;  
    output          oCP_PLUSE;  
    wire            s_CNTEQCYCLE;   
      
      
    parameter PARAM_7SEG_CYCLE = 32'd2500000;  
      
      
    reg [ 1: 0] sr_SEG_STATE;  
    reg [31: 0] sr_cnt;  
    reg         sr_cp_pluse;    
    assign oSEG_STATE = sr_SEG_STATE;  
    assign oCP_PLUSE = sr_cp_pluse;  
    assign s_CNTEQCYCLE = ( sr_cnt == PARAM_7SEG_CYCLE ) ? 1 : 0;  
      
      
      
      
    //4.作为输出信号量,通过输入信号量赋值给输出,同样可以输入信号量和寄存器组合逻辑,赋值给输出信号量。  
    input        iCLK50M;  
    input        iCP_PULSE;  
    input[15:0]  iSI_DATA;  
    output       oSI;  
    output       oCP;  
    reg [ 3: 0] sr_cnt;  
    reg [15: 0] sr_si_data;  
    reg sr_cp;  
    reg sr_en;  
    assign oSI = sr_si_data[15];  
    assign oCP = sr_en & iCLK50M;  
      
      

    endmodule


    assign 语句一般都放在 wire型变量声明之后

    • 发布于 2017-05-04
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:4
  • 不一定要写在最后一行,但是必须写在申明之后。

    硬件描述语言跟软件不同,他是硬件的编程,分段性很强,你可以认为用代码在写电路,先写电路的哪一部分是没有讲究的,变成代码的话意味着先写那一段是没有讲究的。赋值可以放在前面。

    • 发布于2017-05-03
    • 举报
    • 评论 1
    • 2
    • 0
guyuemao 回复了 oceancjc :大神 学习的时候看到例程里面,一个模块里两个字模块之间有联系的都定义了一个wire 变量,但是变量名字有一样的有不一样的 回复

  • 不必须,但必须写在变量定义之后
    • 发布于2017-05-04
    • 举报
    • 评论 0
    • 0
    • 0

  • 您好,放在module區塊內前後都可以,但主要是放置在combinational logic的always block中

    但assign是用在wire,所以如果是reg型別(通常輸入/出都要buffer),直接用'='指派即可

    不需要在額外寫assign

    以上解答

    • 发布于2017-05-04
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

FPGA组合模块数值传递语句?