精华内容
下载资源
问答
  • 在Quartus中如何原理图(.bdf文件)可以直接转化为Verilog语言文件(.v文件),操作方法选择File/Create Update/Create HDL file for Current file,选择Verilog HDL。

    在Quartus中如何原理图(.bdf文件)可以直接转化为Verilog语言文件(.v文件),操作方法选择File/Create Update/Create HDL file for Current file,选择Verilog HDL。

    展开全文
  • DE10之verilog代码转原理图演示视频,DE10之verilog代码转原理图演示视频
  • EPM240 cpld最小系统核心板ALTIUM原理图+PCB+verilog测试工程源码,采用2层板设计,板子大小为60x36mm,双面布局布线,主要器件为EPM240T100C5,USB串口芯片CH340G,LDO-AMS1117-3.3 MICIRO USB接口供电。...
  • verilog&vivado实现彩色图像灰度的 一、算法简述: 灰度的算法还是比较简单的,最后的结果就是加权和: Gray = 0.2989*R+0.5870*G+0.1140*B 这就是MATLAB中rgb2gray函数的算法原理; 本示例输入的是8bits的...

    一、算法简述[2]
    转灰度的算法还是比较简单的,最后的结果就是加权和:

    Gray = 0.2989*R+0.5870*G+0.1140*B
    

    这就是MATLAB中rgb2gray函数的算法原理;

    本示例输入的是8bits的三通道彩色图像数据,输出的也是8bits的数据,为了不涉及到小数,我们将数据整体左移16位即乘以65536,然后在右移16bit进行还原。根据matlab中的算法原理进行设计:

    gray <= 19589 * red + 38469 * green + 7471 * blue;
    Gray = gray >> 16;
    

    二、代码示例:

    //addr module
    module addr#(
    	parameter ADDRWIDTH = 18
    	
    )
    (
    	input 	              		 CLK,
    	input 						 RSTn,
    	input                        start,
    	input                        Done_one,
    	output [ ADDRWIDTH - 1 : 0 ] ADDR,
    	output                       Done_full
    );
    
    reg [ ADDRWIDTH - 1 : 0 ] addr;
    reg isDone;
    
    always @ ( posedge CLK  )
    begin
    	if (!RSTn)
    		begin
    			addr <= 0;
    			isDone <= 0;
    			#100 addr <= 1;
    		end
    //	else 
    //		begin
    //			addr <= 1;
    //		end
    end		
    always @ ( posedge CLK or negedge RSTn )
    begin		
    		if (addr == 19'd262144)
    		begin
    			addr <= 0;
    			isDone <= 1;
    		end
    		else if (Done_one)
    		begin
    			addr <= addr + 1;
    			isDone <= 0;
    		end
    end		
    
    assign ADDR = addr;
    assign Done_full = isDone;
    endmodule
    
    //rgb2gray module
    module rgb2gray#(
    	parameter DATAWIDTH = 8
    )
    (
    	input 					     CLK,
    	input 						 RSTn,
    	input                        start,
    	input  [ DATAWIDTH - 1 : 0 ] DATA_R,
    	input  [ DATAWIDTH - 1 : 0 ] DATA_G,
    	input  [ DATAWIDTH - 1 : 0 ] DATA_B,
    	output [ DATAWIDTH - 1 : 0 ] gray_picture,
    	output                       Done_one
    );
    
    reg [ DATAWIDTH - 1 : 0 ] data_r;
    reg [ DATAWIDTH - 1 : 0 ] data_g;
    reg [ DATAWIDTH - 1 : 0 ] data_b;
    reg [ 23 : 0 ] gray;
    reg get_gray;
    reg [2:0] k;
    reg isDone;
    
    
    always @ ( posedge CLK or negedge RSTn )
    begin
    	if (!RSTn)
    	begin
    		data_b <= 0;
    		data_g <= 0;
    		data_r <= 0;
    		get_gray <= 0;
    	end
    	else if (start)
    	begin
    		data_b <= DATA_B;
    		data_g <= DATA_G;
    		data_r <= DATA_R;
    		get_gray <= 1;
    	end
    end
    always @ ( posedge CLK or negedge RSTn )
    begin
    	if (!RSTn)
    	begin
    		gray <= 0;
    		isDone <= 0;
    		k <= 0;
    	end
    	else if (get_gray)
    		case ( k ) 
            0: 
                begin
                    gray <= 19589 * data_r + 38469 * data_g + 7471 * data_b;
                    k <= k + 1'b1; 
                end
            1: 
                begin 
                    isDone <= 1'b1; 
                    k <= k + 1'b1; 
                    end
            2: 
                begin 
                    isDone <= 1'b0; 
                    k <= 3'd0; 
                end
        endcase
    	
    end
    
    assign gray_picture = ( gray >> 16 );
    assign Done_one = isDone;
    endmodule
    
    //top module
    module top#(
    	parameter DATAWIDTH = 8,
    	parameter ADDRWIDTH = 18
    )
    (
    	input 						CLK,
    	input 						RSTn,
    	input 						start,
    	output [ DATAWIDTH - 1 :0 ] Gray,
    	output					    Done_full,
    	output                      Done_one
    );
    
    wire [ ADDRWIDTH - 1 :0 ] addri;
    wire [ DATAWIDTH - 1 :0 ] r;
    wire [ DATAWIDTH - 1 :0 ] g;
    wire [ DATAWIDTH - 1 :0 ] b;
    wire                      Done_one_w;
    
    addr addr (.CLK(CLK),
               .start(start),
               .Done_one(Done_one_w),
    		   .RSTn(RSTn),
    		   .ADDR(addri),
    		   .Done_full(Done_full));
    picture_512x512_r R (.clka(CLK),
    				   .addra(addri),
    				   .douta(r));
    picture_512x512_g G (.clka(CLK),
    				   .addra(addri),
    				   .douta(g));
    picture_512x512_b B (.clka(CLK),
    				   .addra(addri),
    				   .douta(b));
    				   
    rgb2gray rgb2gray (.CLK(CLK),
    				   .RSTn(RSTn),
    				   .start(start),
    				   .DATA_R(r),
    				   .DATA_G(g),
    				   .DATA_B(b),
    				   .gray_picture(Gray),
    				   .Done_one(Done_one_w));
    				   
    assign Done_one = Done_one_w;
    endmodule
    
    //test
    module tb();
    	reg CLK;
    	reg RSTn;
    	reg start;
    	wire [7:0] Gray;
    	wire Done_full;
    	wire Done_one;	
    reg [18:0] counter;	
    integer fout;
    initial 
    begin
    	CLK = 0;
    	forever #10 CLK = ~CLK;
    end
    
    initial 
    begin
    	RSTn = 0;
    	start = 0;
    	counter = 0;
    	fout = $fopen ("rgb2gray_512x512_v.txt");
    	#100 RSTn = 1;
    	start = 1;
    	counter = 1;
    end
    
    always @ ( posedge CLK )
      if ( Done_one ) 
      begin
         $fwrite (fout,"%d",Gray,"\n");
      end
      
    always @ ( posedge CLK )
      if ( Done_one ) 
        begin
           counter <= counter + 1;
        end
     always @ ( posedge CLK )
      if ( counter == 19'd262145 ) 
        begin
           start <= 0;
           $stop;
        end
    top top (.CLK(CLK),
             .RSTn(RSTn),
    		 .start(start),
    		 .Gray(Gray),
    		 .Done_full(Done_full),
    		 .Done_one(Done_one));
    endmodule
    

    调用IP核:
    本示例调用了IP,调IP事儿真多,主要是license,综合out of date等的一些问题,还不如写一个ROM。具体做法:https://blog.csdn.net/weixin_42183170/article/details/88853224
    最后的project:
    在这里插入图片描述
    工程下载:https://download.csdn.net/download/weixin_42183170/11862204
    仿真结果:
    在这里插入图片描述
    在这里插入图片描述
    生成一个rgb2gray_512x512_v.txt的文件,load进matlab比对。
    三、matlab比较:

    clc
    clear all
    %生成的数据是一行行进行读取的
    [file1,path1] = uigetfile({'*.jpg';'*.png'},'选择图片');
    img = imread([path1,file1]);
    I_gray = rgb2gray(img);%灰度处理
    [m, n] = size(I_gray);%获取尺寸
    subplot(2, 3, 4), imshow(I_gray), title('img-rgb2gray-matlab')
    subplot(2, 3, 2), imshow(img), title('img-RGB')
    
    rgb2gray_v_load = load('.\rgb2gray_512x512_v.txt'); % verilog 产生的rgb2gray数据
    rgb2gray_v = reshape(rgb2gray_v_load, n, m);%262144*1的数组转为512*512的数组
    rgb2gray_v = uint8(rgb2gray_v');%转为8bit
    subplot(2, 3, 6), imshow(rgb2gray_v), title('img-rgb2gray-verilog');
    
    diff = I_gray - rgb2gray_v%每个像素的误差
    a = mean(diff);
    b=mean(a)%总误差
    

    matlab结果:
    在这里插入图片描述
    总误差:
    在这里插入图片描述
    可以看出结果相差无几,总像素误差在0.5左右。
    总结:
    时序好烦,一直都没法把握住时序,出现各种各样的问题,数据流出的地址都会被时序更改。
    加油!
    越是憧憬,越要风雨兼程!

    reference:
    [1] https://www.cnblogs.com/happyamyhope/p/5725741.html
    [2] https://www.cnblogs.com/diewcs/archive/2010/10/03/1841744.html等大佬的博客。

    展开全文
  • EPM240最小系统串口开发板硬件设计protel 99se原理图PCB BOM文件+Verilog串口通信逻辑工程源码,可用Protel或 Altium Designer(AD)软件打开或修改,已经制板使用,可作为你产品设计的参考。 产品简介: 1、 CPLD...
  • RTL8201CL双路DVI Hub CYCLONE2 FPGA主控板PROTEL设计原理图+PCB+BOM+Verilog源码+设计文档,4层板设计,包括完整的原理图PCB设计工程文件,FPGA逻辑源码,已在项目中使用,可以做为你的设计参考。 2. 总体设计概述...
  • 基于cyclone3 FPGA +双核8位AD928设计的双通道示波器quartus8.0 verilog 工程源码+ PDF硬件原理图,双通道示波器应用到FPGA主控与双核8位AD9288,AD9288是一款双核8位单芯片采样模数转换器(ADC),内置片内采样保持...
  • 3)二进制格雷码原理 4)FPGA简介 5)二进制格雷码代码 6)结束语 1 格雷码简介 格雷码是一个叫弗兰克*格雷的人在1953年发明的,最初用于通信。格雷码是一种循环二进制码或者叫作反射二进制码。格雷码的...

    0 目录

    1)格雷码简介

    2)进制转换列表

    3)二进制转格雷码原理

    4)FPGA简介

    5)二进制转格雷码代码

    6)结束语

    1 格雷码简介

    格雷码是一个叫弗兰克*格雷的人在1953年发明的,最初用于通信。格雷码是一种循环二进制码或者叫作反射二进制码。格雷码的特点是从一个数变为相邻的一个数时,只有一个数据位发生跳变,由于这种特点,就可以避免二进制编码计数组合电路中出现的亚稳态。格雷码常用于通信,FIFO或者RAM地址寻址计数器中。

    2 进制转换列表


    图1 不同进制转换

    3 二进制转格雷码原理

    从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,最左边一位不变(相当于左边是0);

    4 FPGA简介

    1)现场可编程门阵列(FPGA),FPGA是可重新编程的硅芯片。

    2)FPGA优点:与DSP和ARM相比,FPGA在数据采集领域有着极其重要的地位。FPGA具有时钟频率高、内部延时小、纯硬件并行控制、运算速度快、编程配置灵活、开发周期短、抗干扰能力强、内部资源丰富等优点,非常适用于实时高速数据采集。

    3)选择FPGA进行数据采集。在实际工程应用中,要求采集系统具有高速率、高精度、实时处理、系统稳定性好和通道数量多等特点,所以FPGA较为适合,ARM和DSP实时性采集能力欠缺。

    5 二进制转格雷码代码

    `timescale 1ns/1ns
    module    gray_counter(
            //系统时钟与复位信号
            sys_clk                ,//input
            reset                ,//input
            
            //与A模块接口信号
            bin_cnt                ,//output
            gray_cnt             //output
                                );

    //Interface definition
    input            sys_clk                ;//系统时钟50MHz
    input            reset                ;//复位信号、高有效

    output[3:0]        bin_cnt                ;//数据信号        
    output[3:0]        gray_cnt            ;//数据信号        

    //Interface signal 
    reg      [3:0]        bin_cnt                ;
    reg      [3:0]        gray_cnt            ;
    //Internal signal 
    reg      [3:0]        bin_cnt_tmp            ;//当前状态
    wire  [3:0]        gray_cnt_tmp        ;//下一状态
    //actual coding
    //bin_cnt_tmp
    always@(posedge sys_clk)
    begin
      if(reset)
        bin_cnt_tmp <= 4'd0;
      else
        bin_cnt_tmp <= bin_cnt_tmp + 1'b1;
    end

    //gray_cnt_tmp,二进制转换为格雷码
    assign gray_cnt_tmp = (bin_cnt_tmp >> 1) ^ bin_cnt_tmp;

    always@(posedge sys_clk)
    begin
      if(reset)
        bin_cnt <= 4'd0;
      else
        bin_cnt <= bin_cnt_tmp;
    end

    always@(posedge sys_clk)
    begin
      if(reset)
        gray_cnt <= 4'd0;
      else
        gray_cnt <= gray_cnt_tmp;
    end

    endmodule    

    6 结束语

    希望对你有帮助,如果遇到问题,可以一起沟通讨论,邮箱:jhqwy888@163.com。

    展开全文
  • 这篇博客会再次详细分析一下数字IC设计中关于 **格雷码(Gray Code)** 的问题 一、什么是格雷码 二、为什么要用格雷码 三、用格雷码实现FIFO指针 四、 将格雷码转换为二进制 ...下图显示格雷码计数器的逻辑原理图

    数字电路基础知识——格雷码和二进制码的转换的算法和Verilog实现

    关于数字电路中的码制问题在这篇博客中已经做了详细分析,
    数字电路基础知识——数字IC中的进制问题(原码,反码,补码以及各进制的转换)
    这篇博客会再次详细分析一下数字IC设计中关于 格雷码(Gray Code) 的问题,在数字IC设计中格雷码的使用范围很广,格雷码由于其误码率底的有点基本上每个模块都会使用到格雷码。
    近期在学习FIFO的时候碰到格雷码转换二进制码的问题。特此写这篇博客总结一下。

    一、什么是格雷码

    格雷码的每一位按照一定的顺序循环。如最右边的一位按照0110的顺序循环,右边第二位按照00111100的顺序循环。即自右向左0、1的循环数目翻倍。
    格雷码的最主要特点:各个相邻码之间仅有一位状态不同,首尾也是仅有一位状态不同。
    在这里插入图片描述

    二、为什么要用格雷码

    首先说下二进制码,在FIFO的设计中,在写请求中,写指针在写时钟作用下递增,在产生FIFO满信号时,需要将写指针和读指针进行比较,由于两个指针分别与其各自的时钟同步,但是彼此之间又是异步的关系,所以在使用二进制计数器实现指针的时候,就会出现比较的指针出现取样值错误的问题。
    如从FFF到000可能会进行如下的转换
    在这里插入图片描述
    如果此时同步时钟边沿在FFF向000转换的时候,就可能会把上面的的三位二进制数的任何取样值同步到新的时钟域,导致数据错误。
    所以采取的办法通常是使用格雷码计数
    在这里插入图片描述
    格雷码的优势在于一个数变为另一个数时,只有一位发生变化。

    三、用格雷码实现FIFO指针

    在这里插入图片描述
    如果要产生完美的FIFO空或满条件,首先需要正确的读写指针,在时钟域传递指针的最好的办法就是使用格雷码来实现指针,这种编码能够消除绝大数错误。上面是格雷码的设计流程。

    1. 将格雷码转换为二进制
    2. 根据条件递增二进制值
    3. 将二进制转换为格雷码
    4. 将计数器的最终格雷码保存至寄存器中
    四、由格雷码转换为二进制
    1. 公式
      格雷码的转换公式:(i < n-1)
      在这里插入图片描述
      计数器的位编号如下:
      MSB: Most Significant Bit的缩写,指最高有效位
      LSB: Least Significant Bit,指最低有效位
      在这里插入图片描述
    2. 例:将格雷码转换为相等的二进制数(@表示异或xor)
      i = 3,
      bin3=gray3 = gray[3] = 1
      i = 2,
      bin2 = gray2 @ bin3 = gray2 @ gray3 = gray[2] @ gray[3] = 1
      i = 1,
      bin1 = gray1 @ bin2 = gray1 @ gray2 @ gray3 = gray[1] @gray[2] @gray[3] = 0
      i = 0,
      bin0 = gray0 @ bin1 = gray0 @ gray1 @ gray2 @ gray3 = gray[0] @ gray[1] @ gray[2] @ gray[3] =0
      于是可以得到如下四个等式:
      在这里插入图片描述
    3. Verilog 语言描述格雷码转换为二进制码
    module gray_to_bin (bin, gray);
    parameter SIZE = 4;
    input [SIZE – 1:0] bin;
    output [SIZE – 1:0] gray;
    reg [SIZE – 1:10] bin;
    integer i;
    always @ (gray)
    for ( i = 0; i <= SIZE; i = i + 1)
    bin[i] = ^(gray >> i);  		//右移一位并按位异或
    endmodule
    
    五、由二进制码转换为格雷码
    1. 公式
      二进制向格雷码的转换公式:(i < n-1)
      在这里插入图片描述
    2. 例:将二进制转换为相等的格雷码(@表示异或xor)
      i = 3,
      gray3 = bin3 = bin[3] = 1
      i = 2,
      gray2 = bin2 @ bin3 = bin[2] @ bin[3] = 0
      i = 1,
      gray1 = bin1 @ bin2 = bin[1] @ bin[2] = 1
      i = 0,
      gray0 = bin0 @ bin1 = bin[0] @ bin[1] = 0
      于是可以得到如下四个等式:
      在这里插入图片描述
      由上式可以看出,通过逐位异或,或者将二进制码右移后与自己异或的操作方式,计算相应的格雷码,如下
      在这里插入图片描述
    3. Verilog 语言描述二进制码转换为格雷码
    module bin_to_gray (bin, gray);
    parameter SIZE = 4;
    input [SIZE-1:0] bin;
    output [SIZE-1:0] gray;
    assign gray = (bin >> 1) ^ bin;			//右移与自己异或
    endmodule
    
    六、格雷码计数逻辑的实现

    由格雷码实现FIFO指针的流程图发现

    module gray_ counter (clk, gray, inr, reset_n)
    	parameter SIZE = 4;
    	input clk, inr, reset_n;t
    	output [SIZE -1 ] gray;
    	reg [SIZE]1 ] gray_temp, gray, bin_temp, bin;
    	integer i;
    	
    	always @ (gray or inr)
    	begin:gray_bin_gray
    		for (i = 0; i<SIZE ; 1 = i +1)
    		bin[i] = ^(gray >> i); // gray to binary conversion
    		bin_temp = bin + inr; // addition in binary
    		gray_temp = bin_temp >> 1) ^ bin_temp; // binary to gray conversion
    	end
    endmodule
    

    下面的逻辑快将转换后的格雷码值寄存起来

    always @ (posedge clk or negedge reset_n)
    begin:gray_registered
    if (~reset_n)
    	gray <= {SIZE {1’b0}};
    else
    	gray <= gray_temp;
    end
    

    下图显示格雷码计数器的逻辑原理图:

    展开全文
  • 所有实现步骤依据 AD7888 DataSheet 中给出的相关数据和时序,对原理和对应Verilog实现进行系统、完整说明。 一、为什么需要模数转换 在许多电路系统中会对一些变量进行收集,从而实现对相应电路模块的控制。这些...
  • []任意分频的verilog语言实现

    千次阅读 2010-02-24 12:33:00
    现来说说分频原理吧,原理通了,什么都好办了。 1....偶数倍分频原理示意1。2. 奇数倍(2N+1)分频 (1)占空比为X/(2N+1)或(2N+1-X)/(2N+1)分频,用模(2N+1)计数器模块可以实现。取
  • 解决办法:首先需要将.bdf原理图文件转换为Verilog HDL等第三方EDA工具所支持的标准描述文件。在Quartus下,保持*.bdf为活动窗口状态,运行[File]/[Create/Update]/[Create HDL Design File for Current File]命令,...
  • RTL原理图检查 19 效果检查 19 任务二 —— 显示译码电路 20 分析任务 20 编写任务二子模块程序 20 编写顶层模块程序 21 RTL原理图检查 22 效果检查 22 任务三 —— 计数器 23 分析任务 23 编写任务三子模块程序 23 ...
  • EPM240 cpld最小系统核心板ALTIUM原理图+PCB+verilog测试工程源码,采用2层板设计,板子大小为85x55mm,双面布局布线,主要器件为LPC2214,USB串口芯片CH340G,MAX708R,AMS1117-3.3 ,MICIRO USB接口供电。...
  • Cadence软件是我们公司统一使用的原理图设计、PCB设计、高速仿真、自动布线的EDA工具。本篇Cadence使用手册是一本基于Allegro SPB V15.2版本的Cadence软件的基础使用手册,包括原理图设计、PCB设计、高速仿真、约束...
  • RS232串口EPM1270T光耦旋转编码器CPLD设计数据采集板ALTIUM硬件原理图+PCB(2层板)+cpld逻辑源码+设计文档说明,2层板设计,大小为85x60mm,Altium Designer 设计的工程文件,包括完整的原理图及PCB文件,可以用...
  • 以4分频为例,波形如下:奇数分频原理方法一使用模为2N+1的计数器,让输出时钟在X-1(X在0到2N-1之间)和2N时各翻转一次,则可得到奇数分频器,但是占空比并不是50%(应为 X/(2N+1))。得到占空比为50%的奇数分频器的...
  • 共23页。 用Verilog编写的数字钟与汽车尾灯模块。其中数字钟具有时间显示的基本功能,按键校时校分,闹钟模块...两个实验均包含详细的原理及代码,且有时序仿真和模块生成。共23页,可作为课程设计的参考模板。
  • 偶数倍分频原理示意1。2.奇数倍(2N+1)分频(1)占空比为X/(2N+1)或(2N+1-X)/(2N+1)分频,用模(2N+1)计数器模块可以实现。取0至2N-1之间一数值X(0,当计数器时钟上升沿从0开始计数到X值...
  • 这是非常齐全的一篇电工接线的文章,包含开关接线断路器、接触器控制回路接线,电机逆转、正转原理接线,电表进出接线,电路开关接线,电热偶接线,希望能帮到想学这些专业的朋友,不是专业的也可以看...
  • 2、初学者一般都有自己的51开发板,闲置是一种浪费,如果有一个FPGA核心板DIP40的模块,搭上合适简单的外围,就可以利用上51开发板的外围,也是一个不错的选择,价格会低一点点。 3、学的深一些的同学,可以搞个51...
  • 这是非常齐全的一篇电工接线的文章,包含开关接线断路器、接触器控制回路接线,电机逆转、正转原理接线,电表进出接线,电路开关接线,电热偶接线,希望能帮到想学这些专业的人,不是专业的也可以看...
  • Verilog 分频器

    2014-12-19 11:12:31
    现来说说分频原理吧,原理通了,什么都好办了。 1. 偶数倍(2N)分频 使用...偶数倍分频原理示意1。 2. 奇数倍(2N+1)分频 (1)占空比为X/(2N+1)或(2N+1-X)/(2N+1)分频,用模(2N+1)计数器模块可以实现
  • 奇数分频器分频原理如下:  上的分频系数是3,用一个计数器在上升沿计数,每次计数到1翻转一次,每次计数到3再翻转一次,然后周期重复得到信号clkp1,它的周期就是clk的3倍,但是它的占空比不是50%(占空比...
  • 重要声明 ...画出CMOS反相器的电路原理图。 002. 反向器的速度与哪些因素有关?什么是转换时间(transition time)和传播延迟(propagation delay)? 003. 解释一下Vih,Vil,Vol,Voh,Vt。...
  • verilog实现rgb2gray

    2016-08-01 14:29:00
    前言 项目算法需求,需要将RGB彩色图像转换为灰度图像,算法原理是很简单的,但是对于刚接触FPGA的宝宝来说,进行时序的设计和调试还是不那么容易的,为了省事儿,就按照上一篇中值滤波...开始的开始,只能根据已经...
  • cordic算法的总结和verilog代码的编写

    千次阅读 2015-07-03 09:42:24
    coridc算法,说到底就是通过向量通过变化来求解角度和和一些基本函数的方法,原理如下所示 注意,此处的x2,y2的计算的正负号会随着旋转方向的不同而不同。 求解向量的赋值: 通过旋转下,x,y,经过一定的旋转...

空空如也

空空如也

1 2 3 4
收藏数 70
精华内容 28
关键字:

原理图转verilog