打印
[CPLD]

程序语句的问题

[复制链接]
1022|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shaorc|  楼主 | 2018-1-3 11:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
【不懂就问】
自己学习cpld,就大量看程序例子
如图中,
【1】数据流描述程序中,assign  #,看到书上说是暂时,这里的程序是什么意思?
【2】门极描述程序,是什么意思?

IMG_20180103_111700.jpg (216.32 KB )

IMG_20180103_111700.jpg

相关帖子

沙发
mcu5i51| | 2018-1-3 14:16 | 只看该作者
1.就是等待一段时间,一般用于仿真,不可综合;
2.就是用 "门" 为单位的电路,也就是基本的数字电路,等同于用74/4000电路设计的电路

使用特权

评论回复
评论
shaorc 2018-1-8 13:25 回复TA
谢谢你的指导 
板凳
emmmm| | 2018-2-6 13:38 | 只看该作者
mcu5i51 发表于 2018-1-3 14:16
1.就是等待一段时间,一般用于仿真,不可综合;
2.就是用 "门" 为单位的电路,也就是基本的数字电路,等同于用74 ...

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

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

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

assign numbg = shift[11:8];
assign numbs = shift[15:12];
endmodule

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

使用特权

评论回复
评论
emmmm 2018-2-6 13:39 回复TA
@mcu5i51 不好意思,这个加黑看不出来···这两行就在程序的第18、19行 
地板
mcu5i51| | 2018-2-7 08:39 | 只看该作者
可以试试加上begin/end
没有用过几天fpga,经验不多

使用特权

评论回复
5
ucx| | 2018-2-7 11:19 | 只看该作者
emmmm 发表于 2018-2-6 13:38
我有个小问题,不敢开贴问,怕说水贴。我遇见一个警告:13012 Latch xxx has unsafe behavior。程 ...

14行改成 shift = numb;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

199

主题

610

帖子

5

粉丝