亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? uart_core.vhd

?? 該程序是用VHDL編寫的串口收發控制器程序
?? VHD
字號:
-- 庫聲明
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use WORK.UART_PACKAGE.all;

entity uart_core is
	generic (
	-- 數據位個數
	DATA_BIT : integer := 8;
	-- 總數據個數
	TOTAL_BIT : integer := 10;
	-- 奇偶校驗規則
	PARITY_RULE : PARITY := NONE );
	port (
	-- 時鐘和復位信號
	clk : in std_logic;
	reset_n : in std_logic;
	-- 和信號監測器的接口信號
	new_data : in std_logic;
	reset_dt : out std_logic;
	-- 復位、使能子模塊的信號
	reset_parts : out std_logic;
	ce_parts : out std_logic;
	-- 和移位寄存器的接口信號
	send_si : out std_logic;
	sel_si : out std_logic;
	regs : in std_logic_vector(TOTAL_BIT-1 downto 0);
	-- 計數器時鐘選擇信號和計數器計數到達上閾的指示信號
	sel_clk : out std_logic;
	overflow : in std_logic;
	-- 和奇偶校驗器的接口信號
	sel_pv : out std_logic;
	parity : in std_logic;
	-- 輸出選擇信號
	sel_out : out std_logic;
	-- 提供給CPU的接口信號
	send : in std_logic;
	send_bus : in std_logic_vector(DATA_BIT-1 downto 0);
	send_over : out std_logic;
	recv : out std_logic;
	recv_bus : out std_logic_vector(DATA_BIT-1 downto 0);
	error : out std_logic );
	
end uart_core;


architecture uart_core of uart_core is

-- 內部信號
signal state : UART_STATE := UART_IDLE;
signal send_buf : std_logic_vector(TOTAL_BIT-1 downto 0);
signal si_count : integer range 0 to 15 := 0;

begin

	-- 主過程
	main: process(clk, reset_n)
	begin
		if reset_n = '0' then
			-- 信號監測器復位信號
			reset_dt <= '1';
			-- 其他模塊的復位和使能信號
			reset_parts <= '0';
			ce_parts <= '0';
			-- 移位寄存器輸入
			sel_si <= '0';
			-- 波特率發生器和計數器的時鐘選擇信號
			sel_clk <= '0';
			-- 奇偶校驗器的輸入
			sel_pv <= '0';
			-- 選擇TxD輸出
			sel_out <= '0';
			-- 與CPU之間的接口信號
			send_over <= '0';
			recv <= '0';
			error <= '0';	 
			recv_bus <= (others => '0');
			
			-- 狀態機
			state <= UART_IDLE;
			
			-- 串行加載的計數
			si_count <= 0;
		elsif rising_edge(clk) then
			case state is
				-- 空閑狀態
				when UART_IDLE =>
				-- 當信號監測器監測到數據時,new_data變為'1'
				if new_data = '1' then
					-- 復位子模塊
					reset_parts <= '0';
					-- 子模塊使能無效
					ce_parts <= '0';
					-- 選擇移位寄存器串行輸入為RxD
					sel_si <= '1';
					-- 選擇移位寄存器的時鐘為波特率始終
					-- 選擇計數器的時鐘為波特率發生器的指示信號
					sel_clk <= '0';
					-- 使得輸出保持為'1'
					sel_out <= '0';
					-- 設置奇偶校驗的數據源為數據發送總線
					sel_pv <= '1';
					-- 改變狀態為接收
					state <= UART_RECV;
				-- 當send信號變為'1',表示CPU要求發送數據
				elsif send = '1' then
					-- 復位子模塊
					reset_parts <= '0';
					-- 子模塊使能無效
					ce_parts <= '0';
					-- 選擇移位寄存器串行輸入為串行加載序列
					sel_si <= '0';
					-- 選擇移位寄存器的時鐘為波特率始終
					-- 選擇計數器的時鐘為波特率發生器的指示信號
					sel_clk <= '0';
					-- 使得輸出保持為'1'
					sel_out <= '0';
					-- 設置奇偶校驗的數據源為數據發送總線
					sel_pv <= '0';
					
					-- 初始化串行加載序列的索引變量
					si_count <= TOTAL_BIT-1;
					
					-- 改變狀態為加載
					state <= UART_LOAD;
				else
					-- 停止對信號監測器的復位
					reset_dt <= '1';
				end if;

				-------- 數據加載和發送狀態--------
					-- 加載狀態
				when UART_LOAD =>
				-- 如果overflow信號為'1',表示數據加載完成
				if overflow = '1' then
					-- 復位子模塊
					reset_parts <= '0';
					-- 子模塊使能信號無效
					ce_parts <= '0';
					-- 選擇移位寄存器串行輸入為串行加載序列
					sel_si <= '0';
					-- 選擇移位寄存器的時鐘為波特率始終
					-- 選擇計數器的時鐘為波特率發生器的指示信號
					sel_clk <= '0';
					-- 使得輸出保持為'1'
					sel_out <= '0';
					-- 設置奇偶校驗的數據源為數據發送總線
					sel_pv <= '0';
					
					-- 改變狀態為發送
					state <= UART_SEND;
				else
					-- 選擇移位寄存器的時鐘為系統時鐘
					-- 選擇計數器的時鐘為系統時鐘
					sel_clk <= '1';
					-- 通過增加si_count,生成串行加載序列
					if not(si_count = TOTAL_BIT-1) then
						si_count <= si_count+1;
					else
						si_count <= 0;
					end if;
					-- 子模塊復位信號無效
					reset_parts <= '1';
					-- 子模塊使能信號有效
					ce_parts <= '1';
				end if;

				-- 發送狀態
				when UART_SEND => 
				
				-- 選擇輸出為TxD
				sel_out <= '1';
				-- 如果overflow為'1',表示發送完成
				if overflow = '1' then	
					-- 輸出發送完成的指示信號
					send_over <= '1';
					
					-- 改變狀態為發送完成
					state <= UART_END_SEND;
				else
					-- 子模塊復位信號無效
					reset_parts <= '1';
					-- 子模塊使能信號有效
					ce_parts <= '1';
				end if;				
				
				-- 發送完成狀態
				when UART_END_SEND =>
				-- 子模塊使能信號無效
				ce_parts <= '0';
				-- 復位信號監測器
				reset_dt <= '0';
				-- 恢復發送完成指示信號
				send_over <= '0';
				
				-- 改變狀態為空閑
				state <= UART_IDLE;				
				
				-------- 數據接收狀態--------
				-- 接收狀態
				when UART_RECV =>
				-- 如果overflow變為"1",表示接收完成
				if overflow = '1' then
					-- 輸出接收指示信號
					recv <= '1';		  
					-- 總線數據輸出
					recv_bus <= regs(DATA_BIT downto 1);
					-- 改變狀態為接收完成
					state <= UART_END_RECV;
				else
					-- 子模塊復位信號無效
					reset_parts <= '1';
					-- 子模塊使能信號有效
					ce_parts <= '1';
				end if;
				
				-- 接收完成狀態
				when UART_END_RECV =>
				-- 進行奇偶校驗
				if not(regs(0) = parity) then
					error <= '1';
				end if;
				-- 子模塊使能信號無效
				ce_parts <= '0';
				-- 復位信號監測器
				reset_dt <= '0';
				-- 恢復接收完成指示信號
				recv <= '0';
				
				-- 改變狀態為空閑
				state <= UART_IDLE;
				
				-- 如果產生未知狀態,輸出錯誤信息
				when others =>
				error <= '1';
				
				-- 恢復到空閑狀態
				state <= UART_IDLE;
			end case;
		end if;
	end process;	
	
	-- 生成串行加載序列
	send_buffer: process(send_bus, parity)
	begin							
		-- 存儲起始位
		send_buf(0) <= '0';
		-- 存儲數據位
		send_buf(DATA_BIT downto 1) <= send_bus(DATA_BIT-1 downto 0);
		-- 存儲奇偶校驗位和停止位
		if PARITY_RULE = ODD or PARITY_RULE = EVEN then
			send_buf(DATA_BIT+1) <= parity;
			send_buf(TOTAL_BIT-1 downto DATA_BIT+2) <= (others => '1');
		else
			send_buf(TOTAL_BIT-1 downto DATA_BIT+1) <= (others => '1');
		end if;	 
	end process;
	
	-- 串行輸入選擇
	si_switch: process(reset_n, si_count)
	begin
		-- 復位
		if reset_n = '0' then
			send_si <= '1';
		else
			-- 將send_buf里面的數據送到send_si端口上
			send_si <= send_buf(si_count);
		end if;
	end process;

end uart_core;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品亚洲专一区二区三区 | 精品伦理精品一区| 亚洲福利视频一区二区| 欧美亚洲日本一区| 亚洲风情在线资源站| 91精品国产综合久久蜜臀| 日韩电影免费在线看| 日韩女优电影在线观看| 久久精品国产77777蜜臀| 国产午夜精品在线观看| 成人国产免费视频| 亚洲香肠在线观看| 日韩欧美在线123| 国产91精品久久久久久久网曝门| 国产精品免费视频观看| 色吊一区二区三区| 琪琪久久久久日韩精品| 久久精品日产第一区二区三区高清版| 成人毛片视频在线观看| 亚洲尤物在线视频观看| 91精品国产色综合久久不卡蜜臀 | 久久久99精品久久| 99精品久久99久久久久| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美日韩高清不卡| 久久不见久久见免费视频1| 中文字幕成人网| 欧美午夜理伦三级在线观看| 免费在线一区观看| 中文字幕日本乱码精品影院| 欧美日韩色一区| 国产精品影视网| 亚洲曰韩产成在线| 久久久精品国产免大香伊| 99re这里只有精品视频首页| 亚洲123区在线观看| 日本一区二区三区在线不卡| 欧美视频三区在线播放| 国产成人精品影院| 亚洲第一电影网| 国产欧美一区二区精品久导航| 欧美日韩一区二区在线观看| 国产精品1区2区| 日韩国产欧美在线观看| 一区免费观看视频| 欧美va在线播放| 欧美性三三影院| 成人在线视频首页| 久久国产婷婷国产香蕉| 亚洲一区成人在线| 国产精品成人在线观看| 精品久久人人做人人爽| 欧美巨大另类极品videosbest | 久久国产免费看| 一区二区三区不卡视频| 国产欧美一区二区三区在线看蜜臀| 欧美三级乱人伦电影| 99久久精品免费观看| 成人性生交大合| 日本欧美一区二区| 亚洲一区免费视频| 中文字幕亚洲在| 欧美国产日产图区| 久久久国产精华| 精品国产免费人成电影在线观看四季| 欧美色国产精品| 91福利在线观看| 91小视频在线免费看| 粉嫩一区二区三区在线看| 麻豆精品蜜桃视频网站| 日韩在线a电影| 亚洲高清视频在线| 午夜天堂影视香蕉久久| 亚洲一区二区欧美激情| 一区二区三区国产| 尤物在线观看一区| 亚洲欧美乱综合| 一区二区三区久久久| 一区二区三区在线影院| 一区二区日韩电影| 亚洲愉拍自拍另类高清精品| 一区二区不卡在线视频 午夜欧美不卡在| 国产精品入口麻豆原神| 国产精品久久久久aaaa| 亚洲欧美综合网| 亚洲黄色尤物视频| 亚洲国产精品自拍| 日韩精品一二三四| 精品一区精品二区高清| 国产乱码字幕精品高清av| 国产一区二区三区在线观看免费视频 | 欧美一区二区三区在| 欧美一区二区三级| 精品成人一区二区三区四区| 久久综合色天天久久综合图片| 久久久久久久久岛国免费| 国产日韩欧美一区二区三区乱码 | 三级成人在线视频| 麻豆成人久久精品二区三区小说| 美腿丝袜亚洲综合| 国产精品白丝jk黑袜喷水| 成人蜜臀av电影| 欧美亚洲日本国产| 欧美一级高清片| 国产欧美日韩麻豆91| 亚洲视频网在线直播| 亚洲国产一区二区三区青草影视| 日韩经典中文字幕一区| 国产一区二区三区综合| 97久久超碰精品国产| 欧美视频完全免费看| 精品剧情在线观看| 亚洲日本在线看| 日本一区中文字幕| 成人一区在线看| 欧美日韩国产片| 国产免费观看久久| 午夜在线成人av| 风间由美一区二区三区在线观看 | ww亚洲ww在线观看国产| 国产精品无人区| 午夜国产精品影院在线观看| 狠狠色丁香婷婷综合久久片| 91小视频在线观看| 日韩欧美的一区| 亚洲女同一区二区| 国模少妇一区二区三区| 欧洲在线/亚洲| 久久精品亚洲麻豆av一区二区| 一区二区三区av电影| 国产成人鲁色资源国产91色综| 欧美三级中文字幕| 国产精品女同互慰在线看| 男人操女人的视频在线观看欧美| 成人激情视频网站| 精品理论电影在线| 亚洲成人tv网| 91色在线porny| 国产午夜亚洲精品理论片色戒 | 青青草原综合久久大伊人精品| 99久久精品免费看国产| 欧美精品一区二区久久久| 亚洲自拍偷拍网站| 91丨porny丨国产入口| 久久人人爽爽爽人久久久| 亚洲国产一区视频| 色哟哟在线观看一区二区三区| 精品粉嫩aⅴ一区二区三区四区| 亚洲国产一区二区三区青草影视| 波多野结衣一区二区三区| 欧美成人高清电影在线| 日韩中文字幕不卡| 欧美日韩在线免费视频| 亚洲欧美日韩一区二区三区在线观看| 国产乱码精品一区二区三区av| 91精品免费在线观看| 亚洲成人精品一区二区| 色狠狠一区二区三区香蕉| 亚洲欧美中日韩| 成人av在线一区二区三区| 久久久久久久久久久久电影| 另类小说欧美激情| 91精品国产免费| 性做久久久久久免费观看欧美| 91国产丝袜在线播放| 亚洲欧美激情在线| 色综合视频一区二区三区高清| 中文字幕第一区| aaa国产一区| 亚洲欧美日韩久久| 日本韩国欧美在线| 亚洲在线中文字幕| 欧美精品在线一区二区| 天涯成人国产亚洲精品一区av| 精品视频在线免费看| 天天综合网 天天综合色| 欧美日韩国产一级| 男人操女人的视频在线观看欧美| 欧美一区日韩一区| 狠狠网亚洲精品| 国产肉丝袜一区二区| 成人免费视频caoporn| 亚洲青青青在线视频| 在线观看视频一区| 日韩电影免费在线看| 久久综合精品国产一区二区三区| 国产一区二区视频在线播放| 欧美激情一区二区在线| 91网站在线观看视频| 舔着乳尖日韩一区| 国产精品免费丝袜| k8久久久一区二区三区| 亚洲一区二区三区自拍| 欧美丰满高潮xxxx喷水动漫| 久久国产精品99久久久久久老狼| 久久夜色精品一区| 91视频国产资源| 日av在线不卡| 中文字幕在线观看不卡视频| 在线免费观看一区|