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

共17条 2/2 1 2 跳转至
菜鸟
2012-11-02 15:30:43     打赏
12楼
上面的视频是拨码开关控制数码管静态显示的,代码如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned;

entity sw_sm is
port(sw:in std_logic_vector(7 downto 0);
     sm:out std_logic_vector(7 downto 0 ));
end entity sw_sm;

architecture behav of sw_sm is
begin   
sm<="11000000" when sw="11111110" else
    "11111001" when sw="11111101" else
    "10100100" when sw="11111011" else
    "10110000" when sw="11110111" else
    "10011001" when sw="11101111" else
    "10010010" when sw="11011111" else
    "10000010" when sw="10111111" else
    "11111000" when sw="01111111" else
    "11111111";
end architecture behav;


在编写这个程序的时候注意到了:
if语句只是可以用于进程和子程序之中,而如上的条件信号赋值语句,则是可以用于进程之外的。。。。

菜鸟
2012-11-03 21:30:51     打赏
13楼
硬件电子琴的实现程序:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity music_bas is
port(clk:in std_logic;
     key:in std_logic_vector(7 downto 0);
     beep:out std_logic);     
end entity music_bas;

architecture sound of music_bas is
signal a: integer range 25000 to 100000;--pinlv
signal count:integer range 0 to 100000 ;--fenpin
signal n: std_logic ;--qudongmaichong
begin
process(clk,key,a)
begin
    if( clk'event and clk='1' )then
    count <= count+1;
        if(key="11111111")then
        n<='0';
        else
            if (count=a)then
            count <= 0;
            n <= not n;
            end if;
        end if;
    end if;
   
case key is
when"11111110"=>a<=95566;
when"11111101"=>a<=85121;
when"11111011"=>a<=75850;
when"11110111"=>a<=71592;
when"11101111"=>a<=63776;
when"11011111"=>a<=56818;
when"10111111"=>a<=50618;
--diyin
  
when"01111110"=>a<=47774;
when"01111101"=>a<=42568;
when"01111011"=>a<=37919;
when"01110111"=>a<=35791;
when"01101111"=>a<=31888;
when"01011111"=>a<=28409;
when"00111111"=>a<=25309;
--zhongyin
when others=>null;
end case;
beep <= n;
end process;
end architecture sound;

程序分析:将一定的频率脉冲输入到beep,即可发出不同频率的声音。a则是不同频率的的音调,count是用来计数分频的
n则是分频后的脉冲用来驱动蜂鸣器的。

遇到的问题:引脚的定义为什么是Y2呢?因为这个问题,一直下到板子上出不来效果的,今晚上偶尔修改了下子才发现是时钟引脚定义错了的,求大师指点啦。。。


这个的视频效果,明天传上来的。

菜鸟
2012-11-07 21:57:54     打赏
14楼




song_auto.rar



上面的链接是用VHDL实现的  硬件乐曲自动演奏 的功能。
从中学习到了层次化设计,这个程序花的时间比较多,也就是因为第一次接触层次化设计,刚开始的时候一点头绪都没有,甚至都没有弄明白层次化,以及要用到哪些模块,以及模块中是如何连接的,想了很长时间,其中也意识到了数电的重要性。

也在网上看了不少的资料,最后搞定了的,可能自己的程序中还有很多东西比较冗余,望大家多多指教


下面简单介绍下各个模块的功能。

菜鸟
2012-11-07 22:08:45     打赏
15楼

第一个模块rhythm是用来产生节拍的,利用的计数分频的方法;
第二个模块tone_order是
依据节拍时钟来计数来实现乐曲简谱中音调的顺序,输出tone_index则是针对每个音调的二进制编码;
第三个模块code_play则是依据音调的二进制来解码,赋予计数器不一样的频率来产生脉冲驱动蜂鸣器。


菜鸟
2012-11-10 09:51:55     打赏
16楼

视频地址:http://union.bokecc.com/flash/single/290666218ACBA694_C0488C1C3D7D8737_false_EEA982EE6B20F4D1_1/player.swf
这个是硬件电子琴。。。简单的奏出《小星星》了的。。。

菜鸟
2012-12-13 09:39:03     打赏
17楼
LCD_VHDL.rar



这个完成花费的时间比较长,而且存在许多疑惑的问题。。。。
等段时间总结下子。。。。然后去集中提问下


共17条 2/2 1 2 跳转至

回复

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