美文网首页硬件描述语言
2016.3.30 Vivado Day1 Q3

2016.3.30 Vivado Day1 Q3

作者: KalayO_o | 来源:发表于2016-03-30 18:00 被阅读0次

    0.待解决

    以下,有三个未解决问题:1,3,5斜体部分

    1.模块调用

    模块调用的时候,被调用模块名在前 eg: BeFunction Main(.F1(M1),.F2(M2),......),其中,BeFunction为被调用函数名,Main可以随意定义,F1等是Function中的input output,M1是Main中的各种类型变量,注意reg-input wire-output(见2)

    还有,如果想更改被调用模块的某参量,怎么改来着,忘了,查一下。

    2.Wire与Reg

    好多时候不能赋值不能引用都是这种错误,通常,reg可以多次赋值作为中间变量,而Wire常用作输出,简单的说就是Reg常作为输入,wire常作为输出,在Testbench中,将input替换为reg output替换为wire。如果非要调用wire型的数据,则需要定义一个reg型中间变量,去随意调用更改,最终别忘了assign (wire) a = (reg) b;即可

    3.always多个判断条件

    always @ (posedge clk or negedge clk)是错误的,如果我想做到,当clk跳变时,则...,这个本人暂时没有找到解决办法,求大神们解答。

    4.Testbench

    如果想在TestBench中显示一个中间变量,则需要在主程序中:

    output a;

    ...

    assign a = b;

    只不过仿真完了之后记得将原程序中加进去的这些东西注释掉,不然会让你分配管脚,没法玩了

    5.数字钟时序问题

    见黑体字

    always @(posedge SecClk) begin

    //MinCnt <= 0;HourCnt <=0;

    if(SecL < 9) SecL <= SecL + 1;

    else if(SecH < 5) begin

    SecL <= 0;SecH <= SecH + 1;

    end

    else begin

    SecL <= 0;SecH <= 0;MinCnt <= 1;

    end

    end

    // 分计数

    //时与分进位标志变量如果在秒中定义容易出现进位时 时钟过短,

    //在时分计数执行完之后定义,

    //如果为always@(MinCnt)会出现低位跳变,

    //即0->2->4或者1->3->5这种 

    //原因正在查究,总之注意为posedge

    always @(posedge MinCnt) begin

    if(MinL < 9) MinL <= MinL + 1;

    else if(MinH < 5) begin

    MinL <= 0;MinH <= MinH + 1;

    end

    else begin

    MinL <= 0;MinH <= 0;HourCnt <= 1;

    end

    MinCnt <= 0;

    end

    6.波形文件的打开

    当你双击的时候会很苦恼,不如Open WCFG

    相关文章

      网友评论

        本文标题:2016.3.30 Vivado Day1 Q3

        本文链接:https://www.haomeiwen.com/subject/ciqelttx.html