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

同步串行信号设计VHDL代码ISE仿真

09/07 08:07
504
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-24092Q23953421.doc

共1个文件

名称:同步串行信号设计VHDL代码ISE仿真

软件:ISE

语言:VHDL

代码功能:

同步串口通讯采用三线制通讯式同串行信号行有选通门、时钟和数据三个信号组成。在门信号持续时间内通个时斜脉冲和响应的8N比特串行数据,高位在前,低位在后。用户可以用选门的后沿从移位寄存器中采集注入数据。

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

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. Testbench

5. 仿真图

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
ENTITY Synchronous_serial IS
   GENERIC (
      N      : INTEGER := 8--参数化设计,N可以自由指定,为8的倍数
   );
   PORT (
      
      clk    : IN STD_LOGIC;--时钟输入
      reset  : IN STD_LOGIC;--复位
      SCK    : OUT STD_LOGIC;--同步SCK
      CS     : OUT STD_LOGIC;--选通门
      SDI    : IN STD_LOGIC;--串行数据信号
      data   : OUT STD_LOGIC_VECTOR(N - 1 DOWNTO 0)--接收到的Nbit数据
   );
END Synchronous_serial;
ARCHITECTURE behave OF Synchronous_serial IS
   
   SIGNAL cnt        : INTEGER := 0;--计数器
   SIGNAL SCK_buf  : STD_LOGIC;
   SIGNAL CS_buf   : STD_LOGIC;
   SIGNAL data_buf : STD_LOGIC_VECTOR(N - 1 DOWNTO 0);
BEGIN
   PROCESS (clk, reset)
   BEGIN
      IF (reset = '1') THEN--复位
         cnt <= 0;
      ELSIF (clk'EVENT AND clk = '1') THEN
         IF (cnt >= 2 * N) THEN--计数0~2*N
            cnt <= 0;
         ELSE
            cnt <= cnt + 1;--计数
         END IF;
      END IF;
   END PROCESS;
   
   --控制CS信号
   PROCESS (clk, reset)
   BEGIN
      IF (reset = '1') THEN--复位
         CS_buf <= '1';--默认高电平
      ELSIF (clk'EVENT AND clk = '1') THEN
         IF (cnt > N) THEN--大于N
            CS_buf <= '0';--低电平
         ELSE
            CS_buf <= '1';--高电平
         END IF;
      END IF;
   END PROCESS;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1155

  • 2-24092Q23953421.doc
    下载

相关推荐