在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
楼主: andyjoan

[求助] 请教一个问题,大虾请进

[复制链接]
发表于 2011-11-15 19:54:01 | 显示全部楼层
回复 10# andyjoan

指教不敢当,我对DSP了解比较少,只是一些皮毛,暂且把它当做一个普通芯片来说。说的不对,你也包涵。
你写的这些组合逻辑应该只是你程序的一部分吧。DSPaddr与LCDaddr应该是地址信号吧?

暂且不说其他没有写出来的逻辑,只对
   assign DSPdata= (cs & to_bf )?  LCDdata:16'hzzzz;      (1)
    assign LCDdata=  from_bf? DSPdata:16'hzzzz;              (2)
这两句赋值语句说一下。若DSP读使能(称OE吧)为高,满足(2),LCD从DSP读数,假设为0xabcd;当OE为低且(1)条件为真,楼主的意思应该是DSP读取LCD中的数值,但此时(2)LCDdata为16'hz,究竟是(2)中LCDdata先变化还是(1)中DSPdata先读数呢?这个不好判断。

再者,楼主说不把信号引到外围管脚上时序正常,这个可能是因为FPGA在综合的时候把这部分逻辑去掉了。即:assign LCDdata=  from_bf? DSPdata:16'hzzzz;

这个程序中用到了inout,我的意见是楼主用寄存器暂存,使用时序电路试试。
 楼主| 发表于 2011-11-15 20:09:22 | 显示全部楼层
回复 11# wjhdmmm

非常感谢你的及时回复,能否就上述模块指点下你说的用暂存器的inout用法?
发表于 2011-11-15 22:12:34 | 显示全部楼层
回复 12# andyjoan


这个问题比较复杂,我就举个例子抛砖引玉吧。比如只考虑一段时间,在这段时间内完成DSP的一次读和一次写。这样举例是为了把inout信号既能做一次input信号,也能做一次output信号。

你可以用一个clk做同步时钟,假设这段时间内有一个计数器count从0计数到15;
程序代码可以类似于:

      always @ (posedge clk) begin
               if (!rst) begin
                     .......
               end else begin
                     if (count == 0) begin
                           LCDdata <= DSPdata;
                           xxx         <=  16'hz;
                          OE           <= 1'b1;
                          .......
                     end else if (count == 4) begin
                          DSPdata <= LCDdata;
                           xxx         <=  16'hz;
                          OE           <= 1'b0;
                          .......
                     end else if (count == xxx)  begin
                          .......     
                          .......   
                     end
               end   

         end
当然,你也可以自己定义reg变量,把LCDdata或者DSPdata的值付给这些中间变量,以方便再次的读写。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-5-31 11:04 , Processed in 0.106628 second(s), 3 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表