[CPLD] 程序语句的问题

[复制链接]
249|6
 楼主 | 2018-1-3 11:25 | 显示全部楼层 |阅读模式
【不懂就问】
自己学习cpld,就大量看程序例子
如图中,
【1】数据流描述程序中,assign  #,看到书上说是暂时,这里的程序是什么意思?
【2】门极描述程序,是什么意思?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
| 2018-1-3 14:16 | 显示全部楼层
1.就是等待一段时间,一般用于仿真,不可综合;
2.就是用 "门" 为单位的电路,也就是基本的数字电路,等同于用74/4000电路设计的电路

评论

shaorc 2018-1-8 13:25 回复TA
谢谢你的指导 
| 2018-2-6 13:38 | 显示全部楼层
mcu5i51 发表于 2018-1-3 14:16
1.就是等待一段时间,一般用于仿真,不可综合;
2.就是用 "门" 为单位的电路,也就是基本的数字电路,等同于用74 ...

我有个小问题,不敢开贴问,怕说水贴。我遇见一个警告:13012 Latch xxx has unsafe behavior。程序如下
  1. `timescale 1ns/ 1ps
  2. //该程序为无条件触发,随时将numb值译码并传出
  3. module BCD_YiMa (
  4.         input [7:0] numb,        //主程序要转换的十进制数
  5.         output [3:0] numbg,        //存放个位
  6.         output [3:0] numbs        //存放十位
  7. );

  8. reg [17:0] shift;        //移位寄存器

  9. //*************移位加三算法******************
  10. always [url=home.php?mod=space&uid=72445]@[/url] (*) //无条件触发
  11. begin
  12.         shift[7:0] = numb[7:0];//将十进制数存入移位寄存器低八位
  13.        
  14.         repeat (8)        //循环8次
  15.         begin
  16. [b]                if (shift[11:8] > 4'd4)                shift[11:8] = shift[11:8] + 4'd3;                //大于4则加3
  17.                 if (shift[15:12] > 4'd4)        shift[15:12] = shift[15:12] + 4'd3;[/b]
  18.                 shift[17:1] = shift[16:0];                //左移一位
  19.                 //这里需要用阻塞赋值"=",因为若某4位大于4,则需要先加3再移位
  20.         end
  21. end

  22. assign numbg = shift[11:8];
  23. assign numbs = shift[15:12];
  24. endmodule
复制代码

出问题的那俩行我已经加黑,网上找到都是说要把 if/else 或 case 写完,但我也试着在if下面多加了“else ;”还是无法消除这个警告

评论

emmmm 2018-2-6 13:39 回复TA
@mcu5i51 不好意思,这个加黑看不出来···这两行就在程序的第18、19行 
| 2018-2-7 08:39 | 显示全部楼层
可以试试加上begin/end
没有用过几天fpga,经验不多
| 2018-2-7 11:19 | 显示全部楼层
emmmm 发表于 2018-2-6 13:38
我有个小问题,不敢开贴问,怕说水贴。我遇见一个警告:13012 Latch xxx has unsafe behavior。程 ...

14行改成 shift = numb;
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

关闭

热门推荐上一条 /6 下一条

分享 快速回复 返回顶部 返回列表