假定你的quatus路径是
/opt/intelFPGA_lite/17.0/quartus/bin/quartus
那么用以下命令启动quartus(即通过ssh连接到本地主机来启动X Display).
ssh -Y localhost /opt/intelFPGA_lite/17.0/quartus/bin/quartus
如果提示
localhost ssh refused
那么说明你的系统上没有安装ssh, 用以下命令安装即可
sudo apt-get remove openssh-client openssh-server sudo apt-get install openssh-client openssh-server
看看IP自己生成的testbench是怎样的,再对比一下自己的。
Modelsim –> help –> User Manual.pdf ,拿走,不谢!
普通状态机的典型写法是 case(signal_name) 1’d0: begin end 1’d1: begin end 表示,当signal_name = 1’d0时怎样,signal_name = 1’d1时怎样 而独热码是反过来的 case(1’d1) signal_name[0]: begin end signal_name[1]: begin end 表示,当为1’d1的信号是signal_name[0]时怎样,当为1’d1的信号是signal_name[1]时怎样。由于独热码的编码结构决定了signal_name[0]和[1]不可能同时为1,因此他是可以正常工作的。
这个跟一段式还是两段式关系不大,只要always块里用的是<=赋值,就可以保证状态跳转之后,前一个状态的索引位被清零。else begin下面的第一句state <= 3'd0是用来完成清零的,而所有的位的下一个状态都会在下一个时钟沿同时生效,不管是从0到1还是从1到0。
这个错误的原因很明显,是因为你的代码有问题,综合工具无法推断你的时钟,也即无法推断你的敏感边沿,如下面这段代码中的de信号当时由于缩进不规范,导致书写错误就会出现上面的警告:
always @(posedge clk or negedge rst_n) begin if(~rst_n) begin hcnt <= 0; vcnt <= 0; de <= 0; end else begin if (vs_valid & hcnt_end) hcnt <= 0; else if (vs_valid & hs_valid) hcnt <= hcnt + 1'b1; if (vs_valid & hcnt_end & vcnt_end) vcnt <= 0; else if (vs_valid & hcnt_end) vcnt <= vcnt + 1'b1; end de <= vs_valid & (104<cph_cnt) & (T_DH>=cph_cnt); end
修改正确后警告就消失了
always @(posedge clk or negedge rst_n) begin if(~rst_n) begin hcnt <= 0; vcnt <= 0; de <= 0; end else begin if (vs_valid & hcnt_end) hcnt <= 0; else if (vs_valid & hs_valid) hcnt <= hcnt + 1'b1; if (vs_valid & hcnt_end & vcnt_end) vcnt <= 0; else if (vs_valid & hcnt_end) vcnt <= vcnt + 1'b1; de <= vs_valid & (104<cph_cnt) & (T_DH>=cph_cnt); end end
ChipDebug入站需知
如发现帐号发垃圾帖或垃圾评论的一律封号!
ChipDebug是一个芯片开发调试分享网站 欢迎您的到来!如果您没有帐户请先点击下方按钮进行注册
假定你的quatus路径是
那么用以下命令启动quartus(即通过ssh连接到本地主机来启动X Display).
ssh -Y localhost /opt/intelFPGA_lite/17.0/quartus/bin/quartus如果提示
那么说明你的系统上没有安装ssh, 用以下命令安装即可