这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 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 跳转至

回复

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