3284|2

67

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

曼彻斯特编码的解码问题,用VHDL [复制链接]

现在在做一个红外线的project.RC5 生成一个信号个给检测器,检测器会产生一组14 bits的数据流(是一组曼彻斯特编码)。想用VHDL做一个解码器。试了很多种方法都失败了,特来寻找高手帮忙解决些这个问题。
  1. LIBRARY ieee;
  2. USE ieee.std_logic_1164.all;
  3. USE ieee.numeric_std.all;

  4. ENTITY MANC_decoder IS
  5. GENERIC(

  6.       CLOCK_PERIOD  : integer := 200

  7.        );
  8.    PORT(
  9.       --RESET               : IN     STD_LOGIC;
  10.       --CLK                 : IN     STD_LOGIC;
  11.       MANC_DATA           : IN     STD_LOGIC;
  12.       DATA_OUT            : OUT    STD_LOGIC
  13.        );

  14. END MANC_decoder ;

  15. ARCHITECTURE rtl OF MANC_decoder IS

  16. SIGNAL MANC_DATA_INT : STD_LOGIC;
  17. SIGNAL CLK           : STD_LOGIC;
  18. SIGNAL RESET         : STD_LOGIC;
  19. BEGIN
  20.   
  21. DATA_OUT <= MANC_DATA_INT;
  22. RESET_generator: PROCESS      
  23. BEGIN
  24.         RESET <= '1';
  25.         WAIT FOR 200 ns;
  26.         wait until rising_edge(CLK);
  27.         RESET <= '0';
  28.         WAIT;
  29.         
  30. END PROCESS RESET_generator;
  31. clock_generator:    PROCESS
  32. BEGIN

  33.     CLK <= '1';     
  34.     WAIT FOR (CLOCK_PERIOD/2) * 1 ns;
  35.     CLK <= '0';
  36.     WAIT FOR (CLOCK_PERIOD/2) * 1 ns;

  37. END PROCESS clock_generator;  

  38. MANC_decoder : PROCESS (RESET,CLK)
  39. BEGIN
  40.   
  41.   IF (RESET = '1') THEN
  42.      MANC_DATA_INT <= '0';
  43.   
  44.   ELSIF Rising_edge(CLK) THEN
  45.          
  46.    IF (MANC_DATA = '1') THEN
  47.      MANC_DATA_INT <= '0';
  48.    ELSE
  49.            MANC_DATA_INT <= '1';
  50.    END IF;
  51. --ELSIF (CLK'event AND CLK = '1' AND MANC_DATA = '1' ) THEN
  52. --     MANC_DATA_INT <= '0';
  53. --ELSIF (CLK'event AND CLK = '1' AND MANC_DATA = '0' ) THEN
  54. --     MANC_DATA_INT <= '1';
  55. --ELSIF (CLK'event AND CLK = '0' AND MANC_DATA = '1' ) THEN
  56. --     MANC_DATA_INT <= '1';
  57. --ELSIF (CLK'event AND CLK = '0' AND MANC_DATA = '0' ) THEN
  58. --     MANC_DATA_INT <= '0';               
  59. --   CASE CLK IS
  60. --   WHEN '1'=>
  61. --       IF (MANC_DATA = '1') THEN
  62. --          MANC_DATA_INT <= '0';
  63. --       ELSE
  64. --       MANC_DATA_INT <= '1';
  65. --     END IF;
  66. --   WHEN '0'=>
  67. --       IF (MANC_DATA = '1') THEN
  68. --          MANC_DATA_INT <= '1';
  69. --       ELSE
  70. --       MANC_DATA_INT <= '0';
  71. --     END IF;
  72. --   WHEN OTHERS => NULL;
  73. --   END CASE;                                 
  74.   END IF;
  75.       
  76. END PROCESS MANC_decoder;

  77. END ARCHITECTURE rtl;
复制代码

最新回复

有才    guolh  详情 回复 发表于 2010-4-2 03:56
点赞 关注

回复
举报

86

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
VHDL不熟
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
有才    guolh
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表