VGA接口复习笔记(原理,时序)VGA接口FPGA实现
VGA接口复习笔记(原理,时序)VGA接口FPGA实现
一、显示器工作原理
显示器扫描方式分为逐行扫描和隔行扫描:逐行扫描是扫描从屏幕左上角一点开始,从左向右逐点扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行同步;当扫描完所有的行,形成一帧,用场同步信号进行场同步,并使扫描回到屏幕左上方,同时进行场消隐,开始下一帧。隔行扫描是指电子束扫描时每隔一行扫一行,完成一屏后再返回来扫描剩下的行,隔行扫描的显示器闪烁的厉害,会让使用者的眼睛疲劳。
完成一行扫描的时间称为水平扫描时间,其倒数称为行频率;完成一帧(整屏)扫描的时间称为垂直扫描时间,其倒数称为场频率,即刷新一屏的频率,常见的有60Hz,75Hz等等。标准的VGA显示的场频60Hz,行频31.5KHz。
行场消隐信号:是针对老式显像管的成像扫描电路而言的。电子枪所发出的电子束从屏幕的左上角开始向右扫描,一行扫完需将电子束从右边移回到左边以便扫描第二行。在移动期间就必须有一个信号加到电路上,使得电子束不能发出。不然这个回扫线会破坏屏幕图像的。这个阻止回扫线产生的信号就叫作消隐信号,场信号的消隐也是一个道理。
显示带宽:带宽指的显示器可以处理的频率范围。显示带宽代表显示器显示能力的一个综合指标,指每秒钟所扫描的图素个数。计算公式:B= r(x) × r(y) × V。如果是60Hz刷新频率的VGA,其带宽达640x480x60=18.4MHz,70Hz的刷新频率1024x768分辨率的SVGA,其带宽达1024x768x70=55.1MHz。
二、VGA时序
行数据时序
显示一行数据需要处理两件事:产生行同步信号HSYNC;产生显示的数据信号。
行同步是周期性脉冲信号,周期就是一行的时间e=a+b+c+d,因分辨率不同而有所差异; 而数据信号为模拟信号,当在显示有效数据(Active video)内,DATA信号为0-0.174Vpp的模拟电压(R、G、B)。
VGA需要的是模拟信号,而FPGA提供的是数字信号,因此还需要专用的DAC芯片进行数模转换。很多开发板为了节省成本,会选择用电阻网络R-2R作为视频DAC(黑金AX516开发板就是如此)。
AX516VGA电路图
帧时序
VESA中定义行时序和场时序都需要同步脉冲(Sync a)、显示后沿(Back porch b)、显示时序段(Display interval c)和显示前沿(Front porch d)四部分。VGA工业标准显示模式要求:行同步,场同步都为负极性,即同步脉冲要求是负脉冲。
由VGA的行时序可知:每一行都有一个负极性行同步脉冲(Sync a),是数据行的结束标志,同时也是下一行的开始标志。在同步脉冲之后为显示后沿(Back porch b),在显示时序段(Display interval c)显示器为亮的过程,RGB数据驱动一行上的每一个像素点,从而显示一行。在一行的最后为显示前沿(Front porch d)。在显示时间段(Display interval c)之外没有图像投射到屏幕是插入消隐信号。同步脉冲(Sync a)、显示后沿(Back porch b)和显示前沿(Front porch d)都是在行消隐间隔内(Horizontal Blanking Interval),当消隐有效时,RGB信号无效,屏幕不显示数据。
VGA的场时序与行时序基本一样,每一帧的负极性脉冲(Sync a)是一帧的结束标志,同时也是下一帧的开始标志。而显示数据是一帧的所有行数据。
三.其他显示器时钟分布情况
四FPGA时序实现
实现 VGA 输出显示,在 VGA 显示器里显示测试的彩条图像。程序由 2 个模块实现, 分别是时钟模块 vidio_pll, 彩条生成模块 color_bar。
逻辑框图
1. 顶层模块及VGA 时钟模块video_pll
video_pll 模块是倍频产生模块,通过输入的 clk 时钟产生 VGA 显示所需要的时钟信号, 模块中设置为 65MHz,用来满足 VGA 分辨率为 1024x768 的要求。
//
// BISTU //
// //
// Author: 田彦祖 202.6.4
// // //
////================================================================================//================================================================================
// Revision History:
// Date By Revision Change Description
//--------------------------------------------------------------------------------
//2017/7/20 1.0 Original
//*******************************************************************************/
module top
(input clk,input rst_n,//vga output output vga_out_hs, //vga horizontal synchronization 行同步 output vga_out_vs, //vga vertical synchronization 场同步 output[4:0] vga_out_r, //vga red 红output[5:0] vga_out_g, //vga green 绿output[4:0] vga_out_b //vga blue 蓝
);wire video_clk;
wire video_hs;
wire video_vs;
wire video_de;
wire[7:0] video_r;
wire[7:0] video_g;
wire[7:0] video_b;wire osd_hs;
wire osd_vs;
wire osd_de;
wire[7:0] osd_r;
wire[7:0] osd_g;
wire[7:0] osd_b;assign vga_out_hs = osd_hs;
assign vga_out_vs = osd_vs;
assign vga_out_r = osd_r[7:3]; //discard low bit data读取数据位
assign vga_out_g = osd_g[7:2]; //discard low bit data读取数据位
assign vga_out_b = osd_b[7:3]; //discard low bit data读取数据位//generate video pixel clock
//生成视频像素时钟
IBUFG IBFG_INST
( .O(clk_bufg),.I(clk)
);video_pll video_pll_m0
(.clk_in(clk_bufg),.video_clk(video_clk),.reset(~rst_n),.locked(locked)
);
// 彩条产生模块
color_bar color_bar_m0
(.clk(video_clk),.rst(~rst_n),.hs(video_hs),.vs(video_vs),.de(video_de),.rgb_r(video_r),.rgb_g(video_g),.rgb_b(video_b)
);
//VGA显示窗口
osd_display osd_display_m0
(.rst_n (rst_n ),//系统复位.pclk (video_clk ),//时钟输入.i_hs (video_hs ),//行同步.i_vs (video_vs ),//场同步.i_de (video_de ),//像素数据有效.i_data ({video_r,video_g,video_b} ),//rgb像素数据输出.o_hs (osd_hs ),//输出行同步.o_vs (osd_vs ),//输出场同步.o_de (osd_de ),//输出像素数据有效.o_data ({osd_r,osd_g,osd_b} )//输出像素数据
);endmodule
2. 彩条产生模块color_bar.v
color_bar.v 是产生 8 种颜色的 VGA 格式的彩条,彩条分别为白、黄、青、绿、紫、红、蓝和 黑。针对 VGA 的时序,行同步和场同步各使用一个计数器,行同步计数器用于产生行同步,行有 效像素,场同步计数器用于产生场同步,场有效像素。同时根据计数器的值可以产生水平(X) 和垂直(Y)坐标,通过坐标信息,可以实时显示一些图形。程序中预设了几种分辨率的时序参数, 包括 2 款 LCD 液晶屏的,为后续的 LCD 验证试验做准备。
//
// BISTU //
// //
// Author: 田彦祖 202.6.4
// // //
////================================================================================//*******************************************************************************/
`include "video_define.v"
module color_bar(input clk, //pixel clock 像素时钟input rst, //reset signal high active 复位信号高电平有效output hs, //horizontal synchronization 行同步output vs, //vertical synchronization 场同步output de, //video valid 视频信号可用output[7:0] rgb_r, //video red data 红色像素数据 output[7:0] rgb_g, //video green data 绿色像素数据output[7:0] rgb_b //video blue data 蓝色像素数据
);
//video timing parameter definition 视频时序参数定义 参照显示器时钟分布表
`ifdef VIDEO_1280_720
parameter H_ACTIVE = 16'd1280; //horizontal active time (pixels) 行视频有效像素
parameter H_FP = 16'd110; //horizontal front porch (pixels) 行显示前沿
parameter H_SYNC = 16'd40; //horizontal sync time(pixels) 行同步脉冲
parameter H_BP = 16'd220; //horizontal back porch (pixels) 行显示后沿
parameter V_ACTIVE = 16'd720; //vertical active Time (lines) 场视频有效像素
parameter V_FP = 16'd5; //vertical front porch (lines) 场显示前沿
parameter V_SYNC = 16'd5; //vertical sync time (lines) 场同步脉冲
parameter V_BP = 16'd20; //vertical back porch (lines) 场显示后沿
parameter HS_POL = 1'b1; //horizontal sync polarity, 1 : POSITIVE,0 : NEGATIVE; 行同步脉冲极性设置
parameter VS_POL = 1'b1; //vertical sync polarity, 1 : POSITIVE,0 : NEGATIVE; 场同步脉冲极性设置
`endif//480x272 9Mhz
`ifdef VIDEO_480_272
parameter H_ACTIVE = 16'd480;
parameter H_FP = 16'd2;
parameter H_SYNC = 16'd41;
parameter H_BP = 16'd2;
parameter V_ACTIVE = 16'd272;
parameter V_FP = 16'd2;
parameter V_SYNC = 16'd10;
parameter V_BP = 16'd2;
parameter HS_POL = 1'b0;
parameter VS_POL = 1'b0;
`endif//640x480 25.175Mhz
`ifdef VIDEO_640_480
parameter H_ACTIVE = 16'd640;
parameter H_FP = 16'd16;
parameter H_SYNC = 16'd96;
parameter H_BP = 16'd48;
parameter V_ACTIVE = 16'd480;
parameter V_FP = 16'd10;
parameter V_SYNC = 16'd2;
parameter V_BP = 16'd33;
parameter HS_POL = 1'b0;
parameter VS_POL = 1'b0;
`endif//800x480 33Mhz
`ifdef VIDEO_800_480
parameter H_ACTIVE = 16'd800;
parameter H_FP = 16'd40;
parameter H_SYNC = 16'd128;
parameter H_BP = 16'd88;
parameter V_ACTIVE = 16'd480;
parameter V_FP = 16'd1;
parameter V_SYNC = 16'd3;
parameter V_BP = 16'd21;
parameter HS_POL = 1'b0;
parameter VS_POL = 1'b0;
`endif//800x600 40Mhz
`ifdef VIDEO_800_600
parameter H_ACTIVE = 16'd800;
parameter H_FP = 16'd40;
parameter H_SYNC = 16'd128;
parameter H_BP = 16'd88;
parameter V_ACTIVE = 16'd600;
parameter V_FP = 16'd1;
parameter V_SYNC = 16'd4;
parameter V_BP = 16'd23;
parameter HS_POL = 1'b1;
parameter VS_POL = 1'b1;
`endif//1024x768 65Mhz
`ifdef VIDEO_1024_768
parameter H_ACTIVE = 16'd1024;
parameter H_FP = 16'd24;
parameter H_SYNC = 16'd136;
parameter H_BP = 16'd160;
parameter V_ACTIVE = 16'd768;
parameter V_FP = 16'd3;
parameter V_SYNC = 16'd6;
parameter V_BP = 16'd29;
parameter HS_POL = 1'b0;
parameter VS_POL = 1'b0;
`endif//1920x1080 148.5Mhz
`ifdef VIDEO_1920_1080
parameter H_ACTIVE = 16'd1920;
parameter H_FP = 16'd88;
parameter H_SYNC = 16'd44;
parameter H_BP = 16'd148;
parameter V_ACTIVE = 16'd1080;
parameter V_FP = 16'd4;
parameter V_SYNC = 16'd5;
parameter V_BP = 16'd36;
parameter HS_POL = 1'b1;
parameter VS_POL = 1'b1;
`endif
parameter H_TOTAL = H_ACTIVE + H_FP + H_SYNC + H_BP;//horizontal total time (pixels) 行序列全部时间
parameter V_TOTAL = V_ACTIVE + V_FP + V_SYNC + V_BP;//vertical total time (lines)场同步全部时间
//define the RGB values for 8 colors
parameter WHITE_R = 8'hff;
parameter WHITE_G = 8'hff;
parameter WHITE_B = 8'hff;
parameter YELLOW_R = 8'hff;
parameter YELLOW_G = 8'hff;
parameter YELLOW_B = 8'h00;
parameter CYAN_R = 8'h00;
parameter CYAN_G = 8'hff;
parameter CYAN_B = 8'hff;
parameter GREEN_R = 8'h00;
parameter GREEN_G = 8'hff;
parameter GREEN_B = 8'h00;
parameter MAGENTA_R = 8'hff;
parameter MAGENTA_G = 8'h00;
parameter MAGENTA_B = 8'hff;
parameter RED_R = 8'hff;
parameter RED_G = 8'h00;
parameter RED_B = 8'h00;
parameter BLUE_R = 8'h00;
parameter BLUE_G = 8'h00;
parameter BLUE_B = 8'hff;
parameter BLACK_R = 8'h00;
parameter BLACK_G = 8'h00;
parameter BLACK_B = 8'h00;
reg hs_reg; //horizontal sync register 行同步寄存器
reg vs_reg; //vertical sync register 场同步寄存器
reg hs_reg_d0; //delay 1 clock of 'hs_reg' 行同步延迟寄存器 产生脉冲
reg vs_reg_d0; //delay 1 clock of 'vs_reg' 场同步延迟寄存器 产生脉冲
reg[11:0] h_cnt; //horizontal counter 行同步计数器
reg[11:0] v_cnt; //vertical counter 场同步计数器
reg[11:0] active_x; //video x position x视频位置计数
reg[11:0] active_y; //video y position y轴视频位置计数
reg[7:0] rgb_r_reg; //video red data register 红色像素寄存器
reg[7:0] rgb_g_reg; //video green data register 绿色像素寄存器
reg[7:0] rgb_b_reg; //video blue data register 蓝色像素寄存器
reg h_active; //horizontal video active
reg v_active; //vertical video active
wire video_active; //video active(horizontal active and vertical active)
reg video_active_d0; //delay 1 clock of video_active
assign hs = hs_reg_d0;
assign vs = vs_reg_d0;
assign video_active = h_active & v_active;
assign de = video_active_d0;
assign rgb_r = rgb_r_reg;
assign rgb_g = rgb_g_reg;
assign rgb_b = rgb_b_reg;
always@(posedge clk or posedge rst)//延迟一拍赋值
beginif(rst == 1'b1)beginhs_reg_d0 <= 1'b0;vs_reg_d0 <= 1'b0;video_active_d0 <= 1'b0;endelsebeginhs_reg_d0 <= hs_reg;vs_reg_d0 <= vs_reg;video_active_d0 <= video_active;end
endalways@(posedge clk or posedge rst)//行同步周期计数
beginif(rst == 1'b1)h_cnt <= 12'd0;else if(h_cnt == H_TOTAL - 1)//horizontal counter maximum valueh_cnt <= 12'd0;elseh_cnt <= h_cnt + 12'd1;
endalways@(posedge clk or posedge rst)//有效像素数据时间计数
beginif(rst == 1'b1)active_x <= 12'd0;else if(h_cnt >= H_FP + H_SYNC + H_BP - 1)//horizontal video activeactive_x <= h_cnt - (H_FP[11:0] + H_SYNC[11:0] + H_BP[11:0] - 12'd1);elseactive_x <= active_x;
endalways@(posedge clk or posedge rst)//行同步周期计数
beginif(rst == 1'b1)v_cnt <= 12'd0;else if(h_cnt == H_FP - 1)//horizontal sync timeif(v_cnt == V_TOTAL - 1)//vertical counter maximum valuev_cnt <= 12'd0;elsev_cnt <= v_cnt + 12'd1;elsev_cnt <= v_cnt;
endalways@(posedge clk or posedge rst)//行同步脉冲产生
beginif(rst == 1'b1)hs_reg <= 1'b0;else if(h_cnt == H_FP - 1)//horizontal sync beginhs_reg <= HS_POL;else if(h_cnt == H_FP + H_SYNC - 1)//horizontal sync endhs_reg <= ~hs_reg;elsehs_reg <= hs_reg;
endalways@(posedge clk or posedge rst)//行有效像素数据产生
beginif(rst == 1'b1)h_active <= 1'b0;else if(h_cnt == H_FP + H_SYNC + H_BP - 1)//horizontal active beginh_active <= 1'b1;else if(h_cnt == H_TOTAL - 1)//horizontal active endh_active <= 1'b0;elseh_active <= h_active;
endalways@(posedge clk or posedge rst)//场同步脉冲产生
beginif(rst == 1'b1)vs_reg <= 1'd0;else if((v_cnt == V_FP - 1) && (h_cnt == H_FP - 1))//vertical sync beginvs_reg <= HS_POL;else if((v_cnt == V_FP + V_SYNC - 1) && (h_cnt == H_FP - 1))//vertical sync endvs_reg <= ~vs_reg; elsevs_reg <= vs_reg;
endalways@(posedge clk or posedge rst)//场有效像素数据产生
beginif(rst == 1'b1)v_active <= 1'd0;else if((v_cnt == V_FP + V_SYNC + V_BP - 1) && (h_cnt == H_FP - 1))//vertical active beginv_active <= 1'b1;else if((v_cnt == V_TOTAL - 1) && (h_cnt == H_FP - 1)) //vertical active endv_active <= 1'b0; elsev_active <= v_active;
endalways@(posedge clk or posedge rst)//有效像素显示阶段分为八段分别显示不同彩条
beginif(rst == 1'b1)beginrgb_r_reg <= 8'h00;rgb_g_reg <= 8'h00;rgb_b_reg <= 8'h00;endelse if(video_active)if(active_x == 12'd0)beginrgb_r_reg <= WHITE_R;rgb_g_reg <= WHITE_G;rgb_b_reg <= WHITE_B;endelse if(active_x == (H_ACTIVE/8) * 1)beginrgb_r_reg <= YELLOW_R;rgb_g_reg <= YELLOW_G;rgb_b_reg <= YELLOW_B;end else if(active_x == (H_ACTIVE/8) * 2)beginrgb_r_reg <= CYAN_R;rgb_g_reg <= CYAN_G;rgb_b_reg <= CYAN_B;endelse if(active_x == (H_ACTIVE/8) * 3)beginrgb_r_reg <= GREEN_R;rgb_g_reg <= GREEN_G;rgb_b_reg <= GREEN_B;endelse if(active_x == (H_ACTIVE/8) * 4)beginrgb_r_reg <= MAGENTA_R;rgb_g_reg <= MAGENTA_G;rgb_b_reg <= MAGENTA_B;endelse if(active_x == (H_ACTIVE/8) * 5)beginrgb_r_reg <= RED_R;rgb_g_reg <= RED_G;rgb_b_reg <= RED_B;endelse if(active_x == (H_ACTIVE/8) * 6)beginrgb_r_reg <= BLUE_R;rgb_g_reg <= BLUE_G;rgb_b_reg <= BLUE_B;end else if(active_x == (H_ACTIVE/8) * 7)beginrgb_r_reg <= BLACK_R;rgb_g_reg <= BLACK_G;rgb_b_reg <= BLACK_B;endelsebeginrgb_r_reg <= rgb_r_reg;rgb_g_reg <= rgb_g_reg;rgb_b_reg <= rgb_b_reg;end elsebeginrgb_r_reg <= 8'h00;rgb_g_reg <= 8'h00;rgb_b_reg <= 8'h00;end
endendmodule
3.VGA显示模块
```c
//
// BISTU //
// //
// Author: 田彦祖 202.6.4
// // //
////================================================================================//================================================================================
// Revision History:
// Date By Revision Change Description
//--------------------------------------------------------------------------------
//2017/8/20 1.0 Original
//*******************************************************************************/
module osd_display(input rst_n, input pclk,input[23:0] wave_color,input adc_clk,input adc_buf_wr,input[11:0] adc_buf_addr,input[7:0] adc_buf_data,input i_hs, input i_vs, input i_de, input[23:0] i_data, output o_hs, output o_vs, output o_de, output[23:0] o_data
);
parameter OSD_WIDTH = 12'd336;
parameter OSD_HEGIHT = 12'd48;wire[11:0] pos_x;
wire[11:0] pos_y;
wire pos_hs;
wire pos_vs;
wire pos_de;
wire[23:0] pos_data;
reg[23:0] v_data;
reg[11:0] osd_x;
reg[11:0] osd_y;
reg[15:0] osd_ram_addr;
wire[7:0] q;
reg region_active;
reg region_active_d0;
reg region_active_d1;
reg region_active_d2;reg pos_vs_d0;
reg pos_vs_d1;assign o_data = v_data;
assign o_hs = pos_hs;
assign o_vs = pos_vs;
assign o_de = pos_de;
//delay 1 clock
always@(posedge pclk)
beginif(pos_y >= 12'd9 && pos_y <= 12'd9 + OSD_HEGIHT - 12'd1 && pos_x >= 12'd9 && pos_x <= 12'd9 + OSD_WIDTH - 12'd1)region_active <= 1'b1;elseregion_active <= 1'b0;
endalways@(posedge pclk)
beginregion_active_d0 <= region_active;region_active_d1 <= region_active_d0;region_active_d2 <= region_active_d1;
endalways@(posedge pclk)
beginpos_vs_d0 <= pos_vs;pos_vs_d1 <= pos_vs_d0;
end//delay 2 clock
//region_active_d0
always@(posedge pclk)
beginif(region_active_d0 == 1'b1)osd_x <= osd_x + 12'd1;elseosd_x <= 12'd0;
endalways@(posedge pclk)
beginif(pos_vs_d1 == 1'b1 && pos_vs_d0 == 1'b0)osd_ram_addr <= 16'd0;else if(region_active == 1'b1)osd_ram_addr <= osd_ram_addr + 16'd1;
endalways@(posedge pclk)
beginif(region_active_d0 == 1'b1)if(q[osd_x[2:0]] == 1'b1)v_data <= 24'h000000;elsev_data <= pos_data;elsev_data <= pos_data;
endosd_rom osd_rom_m0
(.addra(osd_ram_addr[15:3]),.clka(pclk),.douta(q)
);
timing_gen_xy timing_gen_xy_m0
(.rst_n (rst_n ),.clk (pclk ),.i_hs (i_hs ),.i_vs (i_vs ),.i_de (i_de ),.i_data (i_data ),.o_hs (pos_hs ),.o_vs (pos_vs ),.o_de (pos_de ),.o_data (pos_data ),.x (pos_x ),.y (pos_y )
);
endmodule
仿真结果
结果演示
源码工程地址
源码下载地址
参考地址
添加链接描述
VGA接口复习笔记(原理,时序)VGA接口FPGA实现相关推荐
- 微型计算机及接口技术笔记,自考微型计算机及其接口技术笔记串讲汇总.docx
応 导读:微型计算机及其接口技术这一章笔记主要是针对第一至第七章地重点进行了一个 总结? 第1章微型计算机概论 微处理器一一由运算器.控制器.寄存器阵列组成 微型计算机一一以微处理器为基础,配以内存以 ...
- php 接口升级,PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [6] 版本升级接口开发...
判定 app 是否需要加密:通过 app 表中的 status 字段来判定,加密的字符串为 app 表中的 key 字段. 在获取的客户端和服务器端(数据库表中相应字段)的版本号不一致时,返回 dat ...
- java set 接口_java笔记四:Set接口
Set不保存重复的元素.Set中最常被使用的是测试归属性,你可以很容易的询问某个对象是否在某个Set中.Set具有与Collection完全一样的接口,因此没有任何额外的功能.实际上Set就是Coll ...
- 《微机原理与接口技术》期末复习笔记
微机原理与接口技术 第01章 微机原理概述 基本知识 CPU:中央处理单元(Central Processor Unit),处理器,能够分析和执行指令的部件,能分析和执行指令的芯片就是CPU MPU: ...
- Hybrid接口的工作原理及其配置
Hybrid接口的工作原理涉及及接口的三个属性: 分别为:untag列表,tag列表,PVID(port-base VLAN ID,基于端口的VLAN ID) untag列表:只在接口发送数据帧时起作 ...
- TYPE-C接口的工作原理图文详解
TYPE-C接口的工作原理图文详解 发表于 2018-01-29 09:53:53 电子常识 +关注 2016年,有一个名词在手机上非常火,几乎所有的旗舰手机都会提到这个名词,说到这,大家应该都够猜到 ...
- VGA 接口 学习笔记
VGA定义 VGA的全称是Video Graphics Array,即视频图形阵列,是一个使用模拟信号进行视频传输的标准.是 IBM 于1987年提出的一个使用类比讯号的电脑显示标准.这个标准已对于现 ...
- 《微型计算机原理与接口技术》期末总复习 —— 一篇匆匆忙忙的复习笔记
这篇复习笔记是针对<微型计算机原理与接口技术>后面几章的 前面的汇编复习内容在 "零.学习笔记总目录" 的 "汇编考前复习" 中 ✅ 这篇笔记中可能 ...
- 《微型计算机原理与接口技术》复习笔记(四)
使用教材为 <微型计算机原理与接口技术>(慕课版) 孙丽娟.李爱群.陈燕俐.周宁宁.邓玉龙编著 微机原理复习笔记一 微机原理复习笔记二 微机原理复习笔记三 微机原理复习笔记四 中断系统 1 ...
最新文章
- LeetCode简单题之重新格式化字符串
- python-桶排序
- Docker中容器数据持久化-数据卷的简单使用
- MySQL常用存储引擎之MyISAM
- 前端: 42 种前端常用布局方案,值得收藏!
- 疫情之下网络安全如何保障?Akamai防护方案前来“保驾护航”
- docker 6 docker运行的底层原理
- 70进货卖100利润是多少_进货价8块的产品,在网上卖100块,这个电商卖家能赚多少!...
- VC++ Tab Control控件的使用
- 修复Mac无法进入睡眠模式的技巧
- UE4运行时交互工具框架
- 关于批判性思维(Critical Thinking)
- linux性能监控命令dstat详解【杭州多测师_王sir】【杭州多测师】
- 【新闻】本人新书《Java多线程编程实战指南(核心篇)》已出版上市
- php 监听 扫描枪,Android监听扫描枪内容(一)
- 皮尔逊(Pearson)相关系数 - 公式和代码实现
- Python中列表,元组,字典的一些基本用法
- matlab求解线性规划问题的实例代码,用matlab求解线性规划问题.doc
- 最新论文阅读(17)--Pyramidal RoR for Image Classification
- web学习笔记-html-html新增
热门文章
- 【邀请函】2022中国开源年会如约而至,XuperChain三道关等你闯!
- 毕业求职:求职面试前不知如何准备? 4 个秘诀助你自信面试!
- 让小朋友学会LED点阵显示
- Java-编写一个类 Book,代表图书
- C++ 高效编程:pass-by-value(值传递)与pass-by-reference(引用传递)
- python中pass的含义_python中pass语句意义与作用(实例分析)
- 云扩科技与百胜数睿签署战略合作协议,加速超自动化平台落地零售行业
- WordPress搭建过程
- SiO2/KH550修饰四氧化三铁纳米磁性颗粒|PDA包裹四氧化三铁磁性纳米颗粒(科研级)
- 深入理解CSS margin折叠