您的位置:首页 > 其它

verilog 层次化设计语言调用的问题终于知道了

2012-03-31 23:12 253 查看
这几天一直在学verilog ,但是我不想始终在一个文件里面写代码,就像写单片机驱动代码一样,很多人都是一个.c文件,偶是有目标,有追求的人,哈哈,我也要写很多个.v文件互相调用,但是我在网上找了好多,都没有这方面的介绍,可能是这个问题太基础了,或则是我太笨了,都不管了,我记下来,作为初学脚步。

我写的很简单,就是点亮LED,但是我是通过2个.v文件实现,下面具体讲解步骤,对于编程细节,我就不多讲了,主要是说如何实现的,如果对编程还不明白的,那么就先得入门咯,哈哈。

首先建立工程,我建立工程文件名字是 led ,因此顶层文件就必须是 led.v,底层文件就任意了,我这里建立的底层文件名字为 led_mod 建立好后如下图



然后打开led_mod 开始编辑底层代码如下

module led_mod(rst,clk,led1,led2);

input rst;

input clk;

output led1,led2;

reg clka;

reg [31:0] count;

reg led1,led2;

always @(posedge clk)

begin

count<=count+1;

if(count==25000000)

begin

count<=0;

clka<=~clka;

end

led2<=clka;

end

always @(posedge clka)

begin

led1=~led1;

end

endmodule

(意思为一个LED是1S 闪烁一次,一个是2S 闪烁一次)

然后关键到了:

我们编辑好这个底层文件后,不能直接去编译,我们要去file--creat/update---creat verilog.......



到了这里以后,我们底层的代码就算是over 了,然后我们打开顶层的 led.v 文件编写如下代码

module led(clk,led1,led2);

input clk;

output led1,led2;

wire clk;

wire led1,led2;

led_mod

(

.clk(clk),

.led1(led1),

.led2(led2)

);

endmodule

(其实就是把底层的端口隐射到顶层,实现了一个调用底层文件的作用)

然后我们再编译和配置端口,下载等等,就OK,到这里,也就讲完了顶层和底层的语言调用

也算是用语言实现顶层描述吧,跟原理图实现顶层描述意义一样。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: