xml2028 发表于 2010-4-6 18:01:07

阻塞与非阻塞的区别?

最近写了个用DA产生三角波的程序,DA用的是TLV5620,8位的,
产生三角波的v文件原理是用计数器自加到255,再自减到0,以此来循环,
/*
FPGA clock   24MHz   
24MHz40ns   
40ns * 500 = 20us
*/
module sanjiaobo(clk,rst,wr_data,wr_act);
input clk;
input rst;
output wr_data;
output wr_act;

reg wr_data;
reg wr_act;

reg counter;
reg data_temp;
reg flag;

always @(posedge clk)
begin
        if(!rst)
        begin
                counter = 0;
                data_temp = 0;
                flag = 0;
        end
        else
        begin
                if(counter < 470)
                begin
                        counter = counter + 1;
                        wr_act = 0;
                end
                else
                begin
                        counter = 0;
                        if(flag)
                        begin
                                data_temp = data_temp - 1;
                                if(data_temp <1)   
                                        flag = 0;
                        end
                        else
                        begin
                                data_temp = data_temp + 1;
                                if(data_temp >254)
                                        flag = 1;
                        end
                        wr_data = 3'b000;
                        wr_data = data_temp;
                        wr_act = 1;       
                end
        end
end
endmodule
本模块
产生wr_act wr_data信号给TLV5620DA模块,这个模块里面用的是阻塞的赋值方式,可以驱动DA产生三角波,如果把 = 改为<= ,变为非阻塞的方式就不行了,请各位了解的指导下,这个里面问题到底出在哪里
DAC_tlv5620驱动文件ourdev_544077.rar(文件大小:2K) (原文件名:dac_tlv5620.rar)

xml2028 发表于 2010-4-6 18:41:59

三角波产生.V文件ourdev_544083.rar(文件大小:631字节) (原文件名:sanjiaobo.rar)

tear086 发表于 2010-4-6 20:11:21

强烈推荐看书。
http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_544101.jpg
(原文件名:数字逻辑基础与Verilog设计(原书第2版).jpg)
页: [1]
查看完整版本: 阻塞与非阻塞的区别?