[数电实验]外星萤火虫设计

本文档介绍了基于数电实验的外星萤火虫信号处理系统设计,包括虫后、信虫和哨虫的信号交互。系统通过检测虫后的上升沿并结合内部时钟产生相应脉冲信号,实现信号的同步和调整。在哨虫电路中,根据边界安全状态产生不同防卫信号。代码实现部分展示了如何在FPGA中利用Verilog语言处理这些功能,并提供了Modelsim仿真验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[数电实验]外星萤火虫设计

题目描述

在遥远的 Mars星上有一种类似地球萤火虫的生物 星上有一种类似地球萤火虫的生物 —— 外星萤火虫。
外星萤火虫是社群生物,“ 外星萤火虫是社群生物,“ 虫后 ”以自己的发光信息 ”以自己的发光信息 f0(正常时是 30%占 空比的 毫秒脉冲, 繁殖季为 占空比为 50%,年老时占空比逐渐减小 ,周期逐渐 增大, 直至死亡)控制整个 族群的活动。 虫后死亡如果没有新的及时出 现,族群成员就会四处逃散。
“信虫 ”负责信息中转、传达, 为了使虫后的指令能够到整个族”负责信息中转、传达, 为了使虫后的指令能够到整个族信虫看到后或者其它发光时会自动同步己的器,使得f1与虫后 的 f0同频相,并且自动调整发光 同频相,并且自动调整发光 脉冲宽度为 0.3毫秒, 以免虫族成 员发现虫后衰老而引起恐慌, 保障虫族安定。
“哨虫 ”在虫族领地边界戍卫 ,哨看到信的号会同步反馈一个防”在虫族领地边界戍卫 ,哨看到信的号会同步反馈一个防信号,如果安全 (sta= =0),防卫信号是一个与 f1同相的 双脉冲 双脉冲 信号 f2a(脉冲宽 度 0.1毫秒);当敌人来犯 (sta= =1),防卫信号是 ,防卫信号是 三脉冲 信号 f2b(脉冲宽度 0.1毫 秒)。
哨虫离开边界地区会自动变换职责为信虫。

电路要求

  1. f0的频率范围是 0.5kHz~1.2kHz,占空比 ,占空比 1%~30%,实验时由信号发生器 产生 。
  2. 信虫电路的输入是 f0,输出是 ,输出是 f1,电路 内部有 50MHz的高精度时钟源。
  3. 哨虫电路的输入是 f1和 p(位置信息, 0表示不在边界地区, 1表示在边 界地区 ),以及 sta(状态信息, 状态信息, 0表示安全, 1表示敌人来犯 ),输出是 f2。

题目分析

本题是一个创新类的数电实验,将上升沿检测、脉冲产生等要求综合在一个“实际”的应用场景中。
时钟作为产生脉冲的基准,仅用来作为产生脉冲的其中一个触发信号,另外一个触发信号是虫后的上升沿,此处就涉及到两个上升沿的检测,首先排一下坑:同一个always语句不能同时检测两个posedge,会报错;如果用两个always语句同时检测,在FPGA中,几个always语句是同时执行的,这其中涉及几个变量之间的互相赋值,Quartus会报一个变量在同一时钟周期里给同一变量多次赋值的错。

解决方案

在时钟clk的上升沿检测的条件下,增加手动的虫后上升沿检测。具体操作为:每个时钟将虫后的状态保存到缓存变量中,下一个时钟周期中,对虫后的现态和上一次状态进行判断,如果是上升沿,则产生脉冲信号。
脉冲信号的产生:脉冲信号的产生依赖于FPGA 中的50MHz高频时钟,只需要类似于分频的操作就行。

代码

// 外星萤火虫设计
module xx_xxxx_6(clk,f0,f1,p,sta,f2);  
input f0,clk,p,sta;
output reg f1,f2;
reg [14:0]cnt;
reg temp,flag;

always @(posedge clk)
begin
if(temp==1'b0&&f0==1'b1) flag<=1'b1; //判断f0上升沿,并给出标志信号
if(flag)
begin
	casex({p,sta})
	2'b0_x:begin  //f1和f2均为信虫状态
	if(cnt<15'd15000)begin f1<=1'b1;f2<=1'b1;cnt<=cnt+1'd1;end
	else begin f1<=1'b0;f2=1'b0;cnt<=15'd0;flag<=1'b0;end  //脉冲产生结束,标志信号置0
	end
	2'b1_0:begin  //f2为哨虫且边界安全
	if(cnt<15'd5000)begin f1<=1'b1;f2<=1'b1;cnt<=cnt+1'd1;end
	else if(cnt<15'd10000) begin f1<=1'b1;f2<=1'b0;cnt<=cnt+1'd1;end
	else if(cnt<15'd15000) begin f1<=1'b1;f2<=1'b1;cnt<=cnt+1'd1;end
	else begin f1<=1'b0;f2=1'b0;cnt<=15'd0;flag<=1'b0;end
	end
	2'b1_1:begin  //f2为哨虫且边界危险
	if(cnt<15'd5000)begin f1<=1'b1;f2<=1'b1;cnt<=cnt+1'd1;end
	else if(cnt<15'd10000) begin f1<=1'b1;f2<=1'b0;cnt<=cnt+1'd1;end
	else if(cnt<15'd15000) begin f1<=1'b1;f2<=1'b1;cnt<=cnt+1'd1;end
	else if(cnt<15'd20000) begin f1<=1'b0;f2<=1'b0;cnt<=cnt+1'd1;end
	else if(cnt<15'd25000) begin f1<=1'b0;f2<=1'b1;cnt<=cnt+1'd1;end
	else begin f1<=1'b0;f2=1'b0;cnt<=15'd0;flag<=1'b0;end
	end
	endcase
end
else  cnt<=15'd0;
temp<=f0;
end
endmodule

仿真

下面是modelsim仿真代码

//test
`timescale 1ns/1ns

module tese_xx_xxxx_6;
//clk,f0,f1,p,sta,f2
wire f1,f2;
reg clk,f0,p,sta;

initial  //初始化变量
begin
clk=0;
f0=0;
p=0;
sta=0;

#6000000  sta=1;
#4000000 p=1;
#4000000 sta=0;
#5000000 sta=1;
end
always #10 clk=~clk;  //50MHz时钟信号
always 
begin          //产生凌乱的虫后信号
#100000 f0=1;  //f0信号
#600000 f0=0;
#1000000 f0=1;
#1300000 f0=0;
#1800000 f0=1;
#1900000 f0=0;
end
xx_xxxx_6 test(.clk(clk),.f0(f0),.p(p),.sta(sta),.f1(f1),.f2(f2));

endmodule

仿真结果如图

变量从上到下依次为:clk、f0,p,sta,f1,f2。

点个赞,不定时更新~~

据集介绍:神经元细胞核检测据集 一、基础信息 据集名称:神经元细胞核检测据集 图片量: - 训练集:16,353张 - 测试集:963张 分类类别: - Neuron(神经元细胞核):中枢神经系统的基本功能单位,检测其形态特征对神经科学研究具有重要意义。 标注格式: - YOLO格式,包含边界框坐标及类别标签,适用于目标检测任务 - 据来源于显微镜成像,覆盖多种细胞分布形态和成像条件 二、适用场景 神经科学研究: 支持构建神经元定位分析工具,助力脑科学研究和神经系统疾病机理探索 医学影像分析: 适用于开发自动化细胞核检测系统,辅助病理诊断和细胞计任务 AI辅助诊断工具开发: 可用于训练检测神经元退行性病变的模型,支持阿尔茨海默症等神经疾病的早期筛查 生物教育及研究: 提供标准化的神经元检测据,适用于高校生物学实验室和科研机构的教学实验 三、据集优势 大规模训练样本: 包含超1.6万张训练图像,充分覆盖细胞核的多样分布状态,支持模型深度学习 精准定位标注: 所有标注框均严格贴合细胞核边缘,确保目标检测模型的训练精度 任务适配性强: 原生YOLO格式可直接应用于主流检测框架(YOLOv5/v7/v8等),支持快速模型迭代 生物学特性突出: 专注神经元细胞核的形态特征,包含密集分布、重叠细胞等真实生物场景样本 跨领域应用潜力: 检测结果可延伸应用于细胞计、病理分析、药物研发等多个生物医学领域
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值