推广 热搜: 行业  机械  设备    系统  教师  经纪    参数  蒸汽 

网站建站专家/百度百度地图

   日期:2024-12-28     移动:http://dgaty.xhstdz.com/mobile/quote/85997.html

今天一个下午都在这个问题上挣扎,令PicoBlaze读取四个switches的状态值,显示在LCD上,但是无论怎么改变键值,始终读回来的值是0xF,这说明没有读回来的值是错误的。

   造成错误的原因无非有两个,一个psm软件程序的问题,另一个当然是hdl逻辑的错误。

   首先我测试了汇编程序的原因,INPUT 是PicoBlaze的读指令,测试的程序是这样的(测试部分后用;注释掉了

 
display_sw: 
INPUT s6, SW    ;read the value of switches
;LOAD s6,aa
;OUTPUT s6,LED

   我把读到的键值显示在LED上,发现显示也是不变,从而得知是HDL的问题。

 

开始时的INPUT INTERFACE是这样定义的

 
reg [7:0] in_port_data;
always @(posedge clk)
if(reset)
in_port_data <= 0;
else if(read_strobe==1 && port_id[0]==1)
in_port_data<={4'b0000,sw};
else in_port_data<=8'hzz;	  
assign in_port = in_port_data;	

我的INPUT INTERFACE是最后是这样定义的才得到正确结果

 
//----------------------------------------------------------------------------------------------------------------------------------
// Input interface  
//----------------------------------------------------------------------------------------------------------------------------------
 
reg [7:0] in_port_data;
always @*
if(port_id[0])
//error: sw的port_id是01,因此此处[]为0,错作1
in_port_data={4'b0000,sw};
else  in_port_data=0;
assign in_port = in_port_data;	
放一张read operation timing 图
 

user guide 曰: The  external circuit must ensure that  the  input data is  stable  during the  sampling edge to avoid  a timing violation.

这样看来我的电路设计可能是造成了timing violation.看了别人的设计是这样的,恍然大悟。

continuous access ports

single access ports

本文地址:http://dgaty.xhstdz.com/quote/85997.html    物流园资讯网 http://dgaty.xhstdz.com/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号