imut_du FPGA第三次作业

作业
在这里插入图片描述

在这里插入图片描述
验证
在这里插入图片描述
在这里插入图片描述

画出真值表,
在这里插入图片描述

仿真验证

在这里插入图片描述
代码参考:提取码:1111
VHDL描述思维导图
在这里插入图片描述

一、VHDL描述语句实验基础
根据开发手册查阅 LED灯引脚
在这里插入图片描述
根据原理图
在这里插入图片描述
知 当 FPGA的引脚输出为逻辑 0 时,LED 会熄灭。输出为逻辑 1 时,LED 被点亮

二、VHDL编程

1、简单赋值语句

---简单赋值语句
library ieee;
use ieee.std_logic_1164.all;
entity fuxi is
  port(clk_in:in std_logic;---没用上
        y:out std_logic_vector(3 downto 0));
end fuxi;

architecture a of fuxi is
begin
y(3 downto 0)<="0101";
end a;

将四个LED灯设置成输出0101即只有LED1、LED3亮,LED0、LED2不亮
下载过程见上一篇博客参考

下载结果如下
在这里插入图片描述
2、条件复制if then 实现计数满2999999LED高低电平翻转

---条件赋值语句
library ieee;
use ieee.std_logic_1164.all;
entity fuxi is
  port(clk_in:in std_logic;--输入脉冲
 
        y:out std_logic_vector(3 downto 0));
end fuxi;

architecture a of fuxi is
signal flag:std_logic;
begin
clock:process(clk_in)
       variable number : integer range 0 to 3999999; 
		 variable clk_flag:std_logic;
		 begin 
		 if(clk_in' event and clk_in='1')then 
		      if(number=2999999)then
		          number:=0;
				    clk_flag:=not clk_flag;    --定时满  标志位 实现LED灯翻转
				 else
				     number:=number+1;
				 end if;
			end if;
			flag<=clk_flag;
		   end process;
			
y(3 downto 0)<="0110"when flag='1'else "1001";
  
end a;

结果如下

在这里插入图片描述

在这里插入图片描述
注意:计数值number要足够大不然计数不够长肉眼看不见

3、选择赋值语句,按键KEY3按下,输出0001不按下输出0011
此实验引入输入选择信号SEL,以实验板上的按键来模拟,查阅手册知开发板按键手册如下
在这里插入图片描述
在这里插入图片描述
由图按键按下为低电平
此时在管脚中新添加按键输入选择管脚
在这里插入图片描述

---选择赋值语句
library ieee;
use ieee.std_logic_1164.all;
entity fuxi is
  port(clk_in:in std_logic;--输入脉冲
        SEL: IN STD_LOGIC;
        y:out std_logic_vector(3 downto 0));
end fuxi;

architecture a of fuxi is

begin
  with SEL select
y(3 downto 0) <= "0001" WHEN '0',---亮一个灯
       "0011" WHEN '1',---2个灯
       "0000" WHEN OTHERS; ---全灭
			
end a;

其上语句和下面的case语句功能一致

—选择赋值语句case

library ieee;
use ieee.std_logic_1164.all;
entity fuxi is
  port(clk_in:in std_logic;--输入脉冲
        SEL: IN STD_LOGIC;
        y:out std_logic_vector(3 downto 0));
end fuxi;

architecture a of fuxi is

begin
	process (SEL)
		begin
		case SEL is
		when '0' => y(3 downto 0)  <= "0001";
		when '1' => y(3 downto 0)  <= "0011";
		when others => y(3 downto 0)  <= "0000";
		end case;
	end process;			
end a;

演示略
4、移位熄灭LED灯
移位运算参考大佬移位运算

library ieee;
use ieee.std_logic_1164.all;

entity fuxi is
  port(clk_in,SEL:in std_logic;
        y:out std_logic_vector(3 downto 0));
end fuxi;

architecture a of fuxi is
signal clk:std_logic;
   begin
   clock:process(clk_in)
       variable clock_buffer:std_logic;
       variable count_time:integer range 0 to 3999999;
       begin
       if (clk_in'event and clk_in='1' )then
         if (count_time=3999999 )then
            count_time:=0;
            clock_buffer:=not clock_buffer;
         else
            count_time:=count_time+1;
         end if;
       end  if;
       clk<=clock_buffer;
     end process;
  
process(SEL,clk)
  variable q:std_logic_vector(3 downto 0);
  begin
      if(SEL='0') then
        q:="1111";
      else
        if(clk'event and clk='1')then
        q:=q(2 downto 0)&'0';
        end if;
      end if;
   y<=q;
end process;
end a;

尚待解决
wait for 10ns报错
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

位沁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值