• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

摩尔斯电码编码器设计VHDL代码Quartus仿真

04/23 08:37
794
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-250413095T1331.doc

共1个文件

名称:摩尔斯电码编码器设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

使用有限状态机(FSM)来实现摩尔斯电码编码器,实现ABCDEFGH这些字母的摩斯电码。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

使用有限状态机(FSM)来实现摩尔斯电码编码器。摩尔斯电码使用长短脉冲的组合来表示信息。每个字母都表示为一系列点(短点(一个短脉冲)和划线(一个长脉冲)。例如,字母表的前八个字母有以下表示:

顶层结构图如下

1. 工程文件

2. 程序文件

3. 程序编译

4. Testbench

5. 仿真图

部分代码展示:

LIBRARY?ieee;
USE?ieee.std_logic_1164.all;
ENTITY?L7P4?IS
PORT(KEY:INstd_logic_vector(3?DOWNTO?0);
SW:INstd_logic_vector(9?DOWNTO?0);
CLOCK_50:INstd_logic;
--LEDR:OUT?std_logic_vector(9?DOWNTO?0));--?UNCOMMENT?when?targetting?DE1
LEDG:OUT?std_logic_vector(9?DOWNTO?0));--?UNCOMMENT?when?targetting?DE0
END?L7P4;
ARCHITECTURE?mixed?OF?L7P4?IS
COMPONENT?shiftrne?IS
GENERIC?(?N?:?INTEGER?:=?4?)?;
PORT?(?R?:?IN?STD_LOGIC_VECTOR(N-1?DOWNTO?0)?;
L,?E,?w?:?IN?STD_LOGIC?;
Clock?:?IN?STD_LOGIC?;
Q?:?BUFFER?STD_LOGIC_VECTOR(N-1?DOWNTO?0)?)?;
END?COMPONENT;
COMPONENT?half_sec_timer?IS
PORT?(?Clk,?Start?:?IN?STD_LOGIC?;
Done?:?OUT?STD_LOGIC);
END?COMPONENT;
SIGNAL?Clk,?nReset,?w,?z,?SEnable,?TStart,?TDone?:?std_logic;
SIGNAL?LR,?CR,?QL,?QC?:?std_logic_vector(3?DOWNTO?0);?--?length?and?code?values?and?shift?register?contents
SIGNAL?sel?:?std_logic_vector(2?DOWNTO?0);
TYPE?state_t?IS?(Init,?Gen_dot,?Jud_nxt,?Pulse_1,?Pulse_2,?Pulse_3,?Gen_nxt,?Dash_nxt,?Gen_nxt_dot,?Gen_nxt_dash);?--?add?to?state?list?as?needed
SIGNAL?y_Q,?Y_D?:?state_t;
BEGIN
Clk?<=?CLOCK_50;
nReset?<=?KEY(0);
w?<=?NOT?KEY(1);?--?start?signal
sel?<=?SW(2?DOWNTO?0);
--LEDR(3?DOWNTO?0)?<=?QC;?--?code?register--?UNCOMMENT?when?targetting?DE1
--LEDR(7?DOWNTO?4)?<=?QL;?--?length?register--?UNCOMMENT?when?targetting?DE1
--LEDR(9)?<=?z;?--?Morse?output?symbol--?UNCOMMENT?when?targetting?DE1
LEDG(3?DOWNTO?0)?<=?QC;?--?code?register--?UNCOMMENT?when?targetting?DE0
LEDG(7?DOWNTO?4)?<=?QL;?--?length?register--?UNCOMMENT?when?targetting?DE0
LEDG(9)?<=?z;?--?Morse?output?symbol--?UNCOMMENT?when?targetting?DE0
LEDG(8)?<=?'0';
WITH?sel?select
CR?<=?"0010"?WHEN?"000",?--?code?register?0=dot,?1=dash,?listed?from?lsb?on?right?to?msb?on?left
"0001"?WHEN?"001",
"0101"?WHEN?"010",
"0001"?WHEN?"011",
"0000"?WHEN?"100",
"0100"?WHEN?"101",
"0011"?WHEN?"110",
"0000"?WHEN?"111",
"0000"?WHEN?OTHERS;
WITH?sel?select
LR?<=?"0011"?WHEN?"000",?--?length?register?in?unary?from?lsb?on?right
"1111"?WHEN?"001",
"1111"?WHEN?"010",
"0111"?WHEN?"011",
"0001"?WHEN?"100",
"1111"?WHEN?"101",
"0111"?WHEN?"110",
"1111"?WHEN?"111",
"0000"?WHEN?OTHERS;
  • 2-250413095T1331.doc
    下载

相关推荐