PotatoPie 4.0 实验教程(5) —— FPGA芯片内置DNA 码读取例程-Anlogic-安路社区-FPGA CPLD-ChipDebug

PotatoPie 4.0 实验教程(5) —— FPGA芯片内置DNA 码读取例程

1. 实验说明

1.1 管脚说明

该例程不需要绑定管脚,只需通过ChipWatch工具进行信号抓取即可。

set_pin_assignment	{ dna }	{ LOCATION = virtualIO; }
set_pin_assignment	{ led }	{ LOCATION = virtualIO; }
set_pin_assignment	{ pll_lock }	{ LOCATION = virtualIO; }

dna是输出的DNA数据高低32位进与之后的结果,目的是产生一个输出避免优化,其它两个分别是LED和PLL锁定信号用于调试。

从ADC文件可以看到所有的管脚都约束为了virtualIO,一方面是不需要连接到外部管脚只需Chipwatch查看,另一方面是避免信号被优化掉。

1.2实验现象

本例程添加了串转并模块与 DNA 读取模块, DNA 码读取例程通过产生脉冲信号对 DNA 模块的移位操
作进行触发,并将
64 位 DNA 序列送入串转并模块中进行转换,从而输出 64 位 DNA 序列。 具体现象可以将 DNA 读取例程加载到开发板上进行查看。

DEMO 板实际 DNA 码读取

编译下载 FPGA 的位流文件,通过选取 ChipWatcher 工具进行输出信号与数据的抓取,检测开发板
DNA 码的具体数值。具体选择查看波形工具方式为在 TD 工具栏内找到 Tools,选择 Debug Tools,然后在
打开的窗口栏内选择
ChipWatcher。通过 ChipWatcher 实际抓到的信号如下图所示。

20231220214320784-image

通过 ChipWatcher 实际抓到的 DNA 数据和 MINI DEMO 板 DNA 码相同。

2.实验原理

调用DNA原语进行DNA的读取

3.源码分析

代码的核心是这个EF2_LOGIC_DNA原语。

module EG_LOGIC_DNA(dout, clk, din, shift_en);    // config dna 
output dout;   // LSB out firstly
input  clk;
input  din;
input  shift_en;
endmodule
  • clk是需要的时钟
  • din是输入移位脉冲
  • shift_en是移位使能
  • dna_dout是串行输出的DNA数据

cnt_rst:

下面的代码首先进行复位处理,计数到cnt_rst[7]为高释放复位

reg [7:0] cnt_rst;
always @(posedge clk_osc) if (!cnt_rst[7]) cnt_rst <= cnt_rst + 1'b1;

assign led = cnt_rst[7];

cnt:

接下来的代码用于产生移位脉冲。

always @(posedge clk_12p5 or negedge pll_lock)
begin
	if(!pll_lock)
		cnt <= 0;
	else if(cnt == 7'd66)
		cnt <= cnt;
	else 
		cnt <= cnt + 1;
end

shift_en、shift_en_data:

shift_en表示移位有效从cnt为1~64有效,而shift_en_data则从cnt为1~65有效,DNA数据为64,因为数据比移位脉冲晚一拍,所以shift_en_data持续到65.

always @(posedge clk_12p5)
begin
	shift_en <= ((cnt >= 7'd1) && (cnt <= 7'd64))? 1'b1 :1'b0; 
	shift_en_data <= ((cnt >= 7'd1) && (cnt <= 7'd65))? 1'b1 :1'b0;
end

dna_value,dna:

第一段代码中dan_value对EF2_LOGIC_DNA的dna_out进行移位完成串转并,这个dan_value即为我们要用chipwatch观察的信号。

第二段是为了避免工程没有输出被优化故意对dna_value做了一个与操作。

always @(posedge clk_12p5)
begin 
	if(shift_en_data)
		dna_value <= {dna_dout,dna_value[63:1]};		
	else;
end

assign dna = dna_value[31:0] & dna_value[63:32];
请登录后发表评论

    没有回复内容