芯片资讯
- 发布日期:2023-12-27 14:05 点击次数:181
试想这样一种场景,有两款不同的FPGA板卡,它们的功能代码90%都是一样的,但是两个板卡的管脚分配完全不同,一般情况下,我们需要设计两个工程,两套代码,之后还需要一直维护两个版本。 那么有没有一种自动化的方式,实现一个工程, ATMEGA系列ATMEL芯片COM编译出一个程序文件, CMOS图像传感器集成电路芯片下载到这两个不同的板卡上, EEPROM带电可擦可编程存储器芯片大全电子元器件PDF资料大全都可以正常运行呢? 本文以开发板A和开发板B为例, 电子元器件PDF资料大全介绍如何实现一套FPGA工程无缝兼容两款管脚不同的板卡?
两款开发板的时钟信号分别为clk_a和clk_b,芯片交易网IC交易网分别位于两个不同的芯片管脚,两个开发板的FPGA型号完全一致,外部时钟的频率也一样。
首先需要判断当前是哪款板卡?实现方式是通过两个计数器,分别对时钟信号进行计数,由于两款板子的时钟信号分别位于不同的管脚,所以只有一个计数器会累加,并达到目标值,这样就实现了板卡型号的自动区分。
具体代码如下:
/*********************************************************************
* Copyright © blog.csdn.net/whik1194
* ModuleName : board_sel.v
* CreateTim : 2023年11月5日 19:16:48
* Author : mcu149
* Function : function
* Version : v1.0
* Version | Modify
* ----------------------------------
* v1.0 | first version
*********************************************************************/
module board_sel(
//Inputs
input clk_a, //100MHz
input clk_b, //100MHz
//Outputs
output reg [1:0] sel = 2'd0,
output reg rst_n = 1'b0
);
//1.parameter
// parameter LATCH_TIME = 10_000_000 / 10; //10ms
// parameter RESET_TIME = 100_000_000 / 10; //100ms
// for simulation
parameter LATCH_TIME = 5_000 / 10; //simulation, 5 us
parameter RESET_TIME = 10_000 / 10; //simulation, 10 us
//2.localparam
localparam BOARD_A = 2'd1;
localparam BOARD_B = 2'd2;
//3.reg
reg [31:0] cnt_a = 0;
reg [31:0] cnt_b = 0;
//4.wire
//5.assign
//6.always
always @ (posedge clk_a) begin
if(cnt_a
cnt_a
end
always @ (posedge clk_b) begin
if(cnt_b
cnt_b
end
always @ (*) begin
if(cnt_a == LATCH_TIME)
sel
else if(cnt_b == LATCH_TIME)
sel
end
always @ (*) begin
if((cnt_a == LATCH_TIME + RESET_TIME)
- 芯片的市场应用和前景如何?2024-03-12
- 芯片的成本如何计算和控制2024-03-11
- 芯片的可靠性如何评估?2024-03-07
- 芯片的频率特性如何?2024-02-27
- 如何成为一名合格的电子元器件工程师2024-02-21
- 如何进行电子元器件的采购和订货?2024-02-17