fpga分模块(简单的模块调用)

顶层模块模块:

module structer(
input clk,
input rst,
output led,
output [2:0] led1
);

fash u1(
.clk(clk),
.rst_n(rst),
.led_out(led)
);


run u2(
.clk(clk),
.rst_n(rst),
.led_out(led1)
);

endmodule

闪光灯模块:

module fash(
input clk,
input rst_n,
output led_out
);

parameter times = 24'd10_000_000;  //21位

reg rled_out;
reg [23:0] count;//计数器

always @(posedge clk or negedge rst_n)
if(!rst_n)
count <= 24'b0;
else if(count == times)
count <= 24'b0;
else
count <= count + 1'b1;

always @(posedge clk or negedge rst_n)
if(!rst_n)
rled_out <= 1'b0;
else if(count == times)
rled_out <= ~rled_out;

assign led_out = rled_out; 

endmodule

流水灯模块:

module run(
input clk,
input rst_n,
output [2:0] led_out
);

parameter times = 25'd20_000_000; 
reg [24:0] count;

reg [2:0] rled_out;

always @(posedge clk or negedge rst_n)
if(!rst_n) 
count <= 25'b0;
else if(count == times)
count <= 25'b0;
else
count <= count +1'b1;

always @(posedge clk or negedge rst_n)
if(!rst_n)
rled_out <= 3'b100;
else if(count == times)
rled_out <= {rled_out[1:0],rled_out[2]};

assign led_out =  rled_out;

endmodule

心得:
①了解模块的调用方式
(书中有两种。本例是第二种,虽然麻烦点,但是楼主觉得量之间的对应关系十分明显,易于编程)
②项目的名称要和顶层的名称相同,不然报错
③多个模块是同时调用的
④在多个always中,不可以对同一reg量操作(例如进行赋值操作),程序报mix….错误
⑤1Mhz(1_000_000)是1微秒(注意自己定义的计数器是否可以达到自己设定的频率)

  • 3
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA调用RocketIO模块的过程如下: 首先,我们需要在FPGA设计中引入RocketIO模块。RocketIO模块是用于高速串行通信和数据传输的模块,常用于FPGA设计中的数据收发接口。 接下来,我们需要配置RocketIO模块的参数。这可以通过FPGA开发软件中的工具进行操作,具体的步骤如下: 1. 打开FPGA开发软件并加载FPGA设计项目。 2. 找到RocketIO模块的配置选项,通常可以在“IP Catalog”或类似的选项中找到。 3. 根据需求和设计要求,配置RocketIO模块的参数。这些参数包括数据速率、时钟频率、通信协议等等。根据不同的应用场景,可能需要对RocketIO模块进行多个参数的配置。 4. 完成配置后,生成RocketIO模块的实例。这会插入一个RocketIO实例到FPGA设计中。 配置完成后,我们可以在FPGA设计中使用RocketIO模块进行数据传输。这可以通过FPGA开发软件提供的编程接口来实现,具体步骤如下: 1. 在FPGA设计中引入RocketIO模块的实例。 2. 使用设计语言(如Verilog或VHDL)编写代码,以实现与RocketIO模块的交互和数据传输。这通常涉及到配置和控制RocketIO模块,以及接收和发送数据。 3. 编译FPGA设计,并使用相应的工具将其烧录到FPGA芯片中。 4. 在FPGA上运行时,RocketIO模块将按照配置和代码中的指令进行工作,实现串行通信和数据传输。 需要注意的是,RocketIO模块通常需要与其他外部设备(如传感器、计算机等)进行配合使用,以完成完整的数据传输和通信功能。对于与其他设备的连接和通信,可能需要采用适当的协议和接口,如串口、以太网等。 总而言之,通过在FPGA设计中引入RocketIO模块、配置其参数,以及在代码中实现与其的交互,就可以实现在FPGA调用RocketIO模块,并完成相应的串行通信和数据传输功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值