bigbat 发表于 2022-4-21 19:02

SparkRoad测评(6)-简易红绿灯与多文件项目

<p>下面是我通过两个文件来组成的层次化的项目工程。</p>

<p>文件一是最顶层文件。counter.v</p>

<pre>
<code>module counter(clk,led,led1,led2,led3);
input clk;
output led;
output reg led1,led2,led3;
wire clko;
wire rest_n;
regcount;
assign rest_n = 1'b1;
assign led = clko;
clks clk_m(
   .refclk(clk),
   .rst_n(rest_n),   
   .clk_out(clko)
);
   
always @(posedge clko or negedge rest_n)
if(!rest_n)begin
    count &lt;= 0;
    led1 &lt;= 1'b0;               
    led2 &lt;= 1'b0;               
    led3 &lt;= 1'b0;
end else begin
   case(count)   
         0,1,2,3:begin   
                count &lt;= count + 1'b1;         
                led1 &lt;= 1'b0;               
                led2 &lt;= 1'b1;               
                led3 &lt;= 1'b1;         
               end               
         4,5,6,7:begin               
                count &lt;= count + 1'b1;         
                led1 &lt;= 1'b1;               
                led2 &lt;= 1'b0;               
                led3 &lt;= 1'b1;         
               end         
          8,9,10,11,12,13,14:begin                                    
                count &lt;= count + 1'b1;         
                led1 &lt;= 1'b1;               
                led2 &lt;= 1'b1;               
                led3 &lt;= 1'b0;         
               end               
         15:begin   
                count &lt;= 0;         
                led1 &lt;= 1'b1;               
                led2 &lt;= 1'b1;               
                led3 &lt;= 1'b0;         
            end      
   endcase
end
   
endmodule
</code></pre>

<p>我在顶层文件中引用了一个秒脉冲定时器的模块clks,clks有三个接口信号:refclk、rest_n、clk_out,主程序的逻辑电路是:黄灯4秒、绿灯4秒、红灯8秒。</p>

<pre>
<code>module clks(refclk,rst_n,clk_out);
input refclk,rst_n;
output reg clk_out;

reg counter;

always @(posedge refclk or negedge rst_n)
if(!rst_n)begin
clk_out &lt;= 1'b0;
counter &lt;= 24'd0;
end else if( counter == (12000000-1))begin
   counter &lt;= 0;
   clk_out &lt;= !clk_out;
end else begin
   counter &lt;= counter + 1'b1;
end

endmodule
</code></pre>

<p>这是clk_m.v模块文件。整个项目的层次是这样的。</p>

<p> &nbsp;</p>

<p>程序烧录到板子后可以看到:各灯安装秒数进行运行了。</p>

<p>&nbsp;</p>

freebsder 发表于 2022-4-21 22:34

<p>支持一个,verilog我都已经看不太懂了</p>

bigbat 发表于 2022-4-22 08:44

freebsder 发表于 2022-4-21 22:34
支持一个,verilog我都已经看不太懂了

<p>莫非兄弟用的是Chisel或者system c吗?</p>

freebsder 发表于 2022-4-22 13:47

bigbat 发表于 2022-4-22 08:44
莫非兄弟用的是Chisel或者system c吗?

<p>很久前用过一段时间verilog,十多年了吧。忘完了都。</p>

13686863148 发表于 2023-10-27 09:21

很少看到用这么好的LED,有颗欧司朗的
页: [1]
查看完整版本: SparkRoad测评(6)-简易红绿灯与多文件项目