这几天一直在学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,到这里,也就讲完了顶层和底层的语言调用
也算是用语言实现顶层描述吧,跟原理图实现顶层描述意义一样。