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