这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » try0422进程贴

共17条 1/2 1 2 跳转至

try0422进程贴

菜鸟
2012-10-25 22:11:13     打赏


2012年10月20日   
收到开发板(商品四),之前也一直在做一些准备,看了下子关于VHDL的书籍,并且安装了QuartusII。。。

2012年10月22日
下载了论坛中的几个测试程序,并且学会了如何将程序烧到开发板中,实现了相应的功能。并且对这个好玩的东西产生了很大的兴趣。。。

2012年10月24日
从一些资料中,学习到了软件的大致使用:即从编写程序,到编译,时序仿真,功能仿真,引脚锁定等;
深入的去理解了下,VHDL的元件例化,以及设计中的层次的思想,在自己最后的项目(出租车计价器)会应用到的。

2012年10月25日
昨日,有个遗留的问题,即引脚锁定,自己寻摸着应该是与开发的电路想对应的(高手也是如是指点的),于是对应着原理图,仔细的了解了下子。。。
同时,也开始着手编写的第一个程序,LED流水灯。。。

2012年10月29日
完成了LED流水灯 闪烁灯的实现。。。(代码见3,4,5层)

2012年10月31日
完成了LED数码管的动态显示。。。(代码见8层,系统图见9层,效果图见10层)

2012年11月1日
完成了拨码开关控制LED数码管的静态显示(效果见11楼,代码12楼)

2012年11月3日
完成了硬件电子琴的简单功能(分别按住按键s1-s7会发出低音部分的1-7按住s8的同时分别按住s1-s7则会发出中音1-7的声音

2012年11月7日
完成硬件乐曲自动演奏  (代码及分析见14,15楼)

2012年12月13日
完成lcd的显示    视频过段时间上传




关键词: try0422     进程     2012年    

菜鸟
2012-10-25 23:12:29     打赏
2楼
顶一下!啊啊

菜鸟
2012-10-29 20:41:16     打赏
3楼
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_signed;

entity led is
port(clkin: in std_logic;
     led:out std_logic_vector(7 downto 0));
end led;

architecture dis of led is
signal sel :integer range 0 to 7;
begin
process(clkin)
    begin
    if(clkin'event and clkin='1')then
    sel <= sel+1;
    end if;
case sel is
when 0=>led<="11111110";
when 1=>led<="11111101";
when 2=>led<="11111011";
when 3=>led<="11110111";
when 4=>led<="11101111";
when 5=>led<="11011111";
when 6=>led<="10111111";
when 7=>led<="01111111";
end case;
end process;
end architecture dis;

菜鸟
2012-10-29 20:49:14     打赏
4楼
下面的是个分频的模块,上面则是LED 流水灯实现的模块

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity fp is
port(clk:in std_logic;
     clkout:out std_logic);
end fp;

architecture func of fp is
signal count : integer range 0 to 10000000;
signal clkout1: std_logic;
begin
process(clk)
begin
    if (clk'event and clk='1')then
    if(count=10000000)then
    count<=0;
    clkout1 <=not clkout1;
    else count<=count+1;
    end if;
    end if;
    clkout<= clkout1;
end process;
end architecture func;


菜鸟
2012-10-29 20:51:54     打赏
5楼
下面则是一个闪烁灯的程序代码

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity twinkle is
port(clk:in std_logic;
     led:out std_logic_vector(10 downto 0));
end entity twinkle;
 
architecture show of twinkle is
 signal count :integer range 0 to 10000000;
 signal sel:bit :='0';
 begin
 process(clk)
 begin
    if(clk'event and clk='1')then
    if(count=10000000)then
        count<=0;
        sel<=not sel;
        if(sel='0')then
        led<="10101010101";
        else
        led<="01010101010";
        end if;
    else count<=count+1;
    end if;
    end if;
 end process;
 end architecture show;

菜鸟
2012-10-29 21:00:38     打赏
6楼
由于还不会发图片跟视频,所以先发代码上来,欢迎大家指正啦,然后呢很感激这个论坛的学习环境,看着别人的进程贴让我学习到了不少的东西,下面我也总结下子,一个小小的流水灯折磨我出来的一些经验:

第一,就是在软件的原理图中实现两个模块的相连接,以及文件的命名一些小小的细节问题;

第二,要学会根据开发板中出现的效果来分析问题所在,之前一直忽略分频这个问题了的;

第三,引脚的锁定,这个也让我纠结了一阵子的,后来发现其实原理图中都有的,要学会去看。

我之前都没有接触过FPGA这个东西,所以刚上手还有挺多问题没有弄明白的,不过我会努力的!

菜鸟
2012-10-29 21:05:33     打赏
7楼

这个就是我的板子啦。。。
购买的是成品板,因为想把精力放到编程方面;
同时也可能会失去了学习一些东西的机会了的。

菜鸟
2012-11-01 09:58:00     打赏
8楼
数码管动态显示:进行了10000次分频,显示效果不会闪烁,其中位选模块和显示模块的代码如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity led_wx is
port(clkin:in std_logic;
     dig:out std_logic_vector(7 downto 0);
     seg:out std_logic_vector(7 downto 0));
end entity led_wx;

architecture func of led_wx is
signal count:std_logic_vector(2 downto 0) :="000";
begin
process(clkin)
begin
    if(clkin'event and clkin='1')then
     count <= count+1;
    end if;
    case count is
        when "000"=>dig<="11111110";
        when "001"=>dig<="11111101";
        when "010"=>dig<="11111011";
        when "011"=>dig<="11110111";
        when "100"=>dig<="11101111";
        when "101"=>dig<="11011111";
        when "110"=>dig<="10111111";
        when "111"=>dig<="01111111";
    end case;
end process;

process(count)
begin
case count is
        when "000"=>seg<="11000000";
        when "001"=>seg<="11111001";
        when "010"=>seg<="10001000";
        when "011"=>seg<="10000011";
        when "100"=>seg<="11000110";
        when "101"=>seg<="10100001";
        when "110"=>seg<="10000110";
        when "111"=>seg<="10001110";
end case;
end process;
end architecture func;

菜鸟
2012-11-01 10:01:34     打赏
9楼
这张图片是数码管显示的原理图:

菜鸟
2012-11-01 10:07:12     打赏
10楼


这张图片则是显示的效果图片:

共17条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]