名称:同步串行信号设计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
阅读全文
504