完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 神奇艾尔斯 于 2019-10-28 10:50 编辑
如题,我想写一个计数器,我设置一个值开始加,加到1000停止;count在always块里,是reg型,好像无法连到vio上,求解。 module counter( input clk ); (*keep="ture"*)reg[9:0]count; (*keep="ture"*)wire[9:0]w; wire TRIGO; always@(posedge clk) begin if(count==10'd1000) count=count; else count=count+10'd1; end assign w=count; //assign w=(clk&&(count<10'd1000))?(count+1):count; ila_1 ila_1( .clk(clk), // input wire clk .probe0(w), // input wire [9:0] probe0 .probe1(TRIGO) // input wire [0:0] probe1 ); vio_0 vio_0( .clk(clk), // input wire clk .probe_out0(count)// output wire [9 : 0] probe_out0 ); assign TRIGO=count[9]; endmodule
|
|
相关推荐
4个回答
|
|
不知什么原因,工程压缩包36.5MB无法上传。我这边可以正常上板调试的代码做成压缩包counter.rar,截图版本是Vivado2019.1。
板卡晶振40MHz,约束XDC文件没有做特别设置(Vivado综合的时候会报warning,可以忽略)。
最佳答案
|
|
2 条评论
|
|
坐等大神解答
|
|
|
|
01.首先解决语法问题。(*keep=“true”*)。
代码里true写成了ture;always块的代码里,IF大写是错误的; count的赋值使用了阻塞赋值“=”,应该改为非阻塞赋值“<=”; 最主要的地方,vio是输出,和always块同时对count赋值,此时对count来讲,造成多次赋值,综合的话会报错。 02.你的开发环境应该是vivado吧。设定需求:使用VIO和ILA同时观察计数器count的状态,代码及仿真参考图片。 03.注意一点,vio和ila无法被仿真。所以仿真波形里没有它俩的数值。 04.你的问题描述的其实不是特别详细,如果想通过vio控制其他参数的值,参考如下代码: //---------------------------------------------------------------------------- module counter( input clk ); (*keep="true"*) reg [9:0] count ;//ture -> true (*keep="true"*) reg [9:0] data_vio ;//set from vio (*keep="true"*) wire [9:0] w ; wire TRIGO ; //------initial初始化 initial begin count = data_vio ; end always@(posedge clk) begin if(count == 10'd1000) count <= count ;//= -> <= else count <= count + 10'd1 ; end assign w = count ; assign TRIGO = count[9] ; //assign w=(clk&&(count<10'd1000))?(count+1):count; //assign w = (count < 10'd1000)?(count+1):count; ila_1 ila_1( .clk (clk ),// input wire clk .probe0 (w ),// input wire [9:0] probe0 .probe1 (TRIGO ) // input wire [0:0] probe1 ); vio_0 vio_0( .clk (clk ),// input wire clk //.probe_in0 (count ) // input wire [9:0] probe_in0 .probe_out0 (data_vio ) // output wire [9:0] probe_out0 ); endmodule //---------------------------------------------------------------------------- |
|
|
|
01.首先解决语法问题。(*keep=“true”*)。
代码里true写成了ture;always块的代码里,IF大写是错误的; count的赋值使用了阻塞赋值“=”,应该改为非阻塞赋值“<=”; 最主要的地方,vio是输出,和always块同时对count赋值,此时对count来讲,造成多次赋值,综合的话会报错。 02.你的开发环境应该是vivado吧。设定需求:使用VIO和ILA同时观察计数器count的状态,代码及仿真参考图片。 03.注意一点,vio和ila无法被仿真。所以仿真波形里没有它俩的数值。 04.你的问题描述的其实不是特别详细,如果想通过vio控制其他参数的值,参考图片。 |
|
2 条评论
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
935 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1140 浏览 0 评论
886 浏览 0 评论
1992 浏览 0 评论
494 浏览 0 评论
1312 浏览 30 评论
5488 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-13 15:24 , Processed in 0.680027 second(s), Total 100, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号