RISCV
mcupro
这个作者很懒,什么都没留下…
展开
-
降低频率为以前的1000之一的代码
odule clk_div_1000(input clk_i,output reg clk_o);reg [9:0] c ;always @ (posedge clk_i) if ( c >= 499 ) c<=0;else c<=c+1;always @ (posedge clk_i) if (c==499) clk_o<= ~clk_o;...原创 2019-10-24 11:19:12 · 211 阅读 · 0 评论 -
mul_u16 五级流水线无符号乘法器
module mul_u16 ( // data_p = data_a * data_b; clk, data_a, data_b, data_p, // delay interface ddata_in, ddata_out); // delayed data bus width parameter DELAY_DATA_WIDTH =...原创 2019-08-20 12:24:58 · 1440 阅读 · 1 评论 -
ad_lvds_clk 将外部时钟同步到本芯片的时钟网络代码
module ad_lvds_clk ( clk_in_p, clk_in_n, clk); parameter DEVICE_TYPE = 0; localparam SERIES7 = 0; localparam VIRTEX6 = 1; input clk_in_p; input clk_i...原创 2019-08-20 12:21:34 · 967 阅读 · 0 评论 -
关于ZEDBOARD上PROG按键以及ZYNQ中PROG脚的作用的分析
人在草木中2019-07-06下午1:33:03李工,启动Linux的问题解决了,我再问个问题,视频3,PL端下载进比特流文件后,FPGA跑起来了,按一下板子上BTN6,就是写了个PROG的那个按钮,程序就不跑了,这是为啥?那个按钮是PL端的复位按钮吗人在草木中2019-07-06下午1:33:34按完复位FPGA应该也会从头跑啊mcupro2019-07-06下午...原创 2019-07-06 17:49:22 · 2387 阅读 · 0 评论 -
一个看门狗模块
module wdg (input clk ,input feed ,output reg do_rst);parameter of_bit = 31 ;reg feedr;always @(posedge clk) feedr<=feed;wire is_feed = feedr != feed ;reg [of_bit:0]...原创 2019-07-05 14:31:38 · 2906 阅读 · 0 评论 -
群里关于一个硬件电路的讨论,纹波大导致烧坏主芯片
来自ZEDBOARD 学习讨论QQ群 414371872的聊天记录梧桐树下(624018797) 11:14:21板子用着用着,不知什么问题,1.8V对地的电阻就变成10欧了李工(715713994) 11:14:45主芯片挂梧桐树下(624018797) 11:14:50这种情况一般是不是只能换fpga了啊李工(715713994) 11:15:27最好排除隐患后再换...原创 2019-06-28 16:52:09 · 2618 阅读 · 0 评论 -
在ZEDBOARD + PETALINUX环境中使用TFTP传输文件【之三】----用TFTP实现文件互传
上述之一讲了嵌入式LINUX中tftp命令的使用。上述之二讲了WIN下简历TFTP服务器。这个BLOG我们实现一下两者的互联,用嵌入式LINUX 的TFTP客户端连接WIN的服务器端,实现文件的上传和下载。连接好网络,将ZEDBOARD和电脑连在同一个路由器下。首先使用ping 192.168.1.102 来确定网络是否连通。之后将tftp服务器端的image.ub文件下载下来...原创 2019-06-26 00:08:56 · 1125 阅读 · 0 评论 -
RISCV模拟器中关于读写存储器部分的实现
#define BUFF_SIZE 1024*1024*8#include "stdio.h"static unsigned int ins_buff[BUFF_SIZE] ; static unsigned int len = 0 ;static unsigned char RAM_B0[BUFF_SIZE] ; static unsigned char RAM_B1[BUFF_...原创 2019-02-16 23:35:48 · 806 阅读 · 0 评论 -
RISCV 模拟器中指令解析部分的实现代码
unsigned int get_ins_func7_b(unsigned int i){ unsigned int r,mask ;mask = (1<<31)|(1<<30)|(1<<29)|(1<<28)|(1<<27)|(1<<26)|(1<<25);r = mask & i ;原创 2019-02-16 23:30:42 · 1131 阅读 · 0 评论 -
RISCV 模拟器器中位扩展的C语言实现
unsigned int ext_s (unsigned int val ,unsigned int hi_bit){ int i ; unsigned int r = 0 ; unsigned int flag_bit; flag_bit = (val & (1<<hi_bit) )?1:0; for(r=0,...原创 2019-02-16 23:21:10 · 722 阅读 · 0 评论 -
RISCV处理器核中关于存储访问部分的实现
这些代码可以借鉴在RISCV 里面实现,注意大小MIPS核是大字端,RISCV核实小字端。 由于是32位处理器,并且指令长度也是32位,所以为了性能要求我们要求存储器宽度要达到32位(如果达不到吗,那用32位处理器就有大材小用了,可以换成8位核或者16核)。而处理器要达到精确到字节的寻址,所以我们用四个8位的款的存储器拼接在一起,但是写信号可以分别控制。我们下面的代码就要实现这部分: ...原创 2019-02-16 20:28:45 · 951 阅读 · 0 评论 -
关于RISCV存储器访问指令的分析
RISC V 32I 指令访问存储器指令有load和STORE两类。这里说的load就是从存储器memory里面读出数据到寄存器组register files。而store正式相反的方向。无论是load还是store我总结都有如下特点:1,地址的生成都是一个寄存器的数值+一个立即数的偏移量(此立即数是有符号扩展)。2,都是直接跟寄存器进行数据交换,也就是从寄存器到存储器不存在运算,都是...原创 2019-02-15 21:49:16 · 3849 阅读 · 0 评论 -
RISCV32的指令集合的简单分类
这里我们只说RISCV32I指令集,这里按照我的理解给RISCV32I的指令做一个简单的分类:首先是可以由编译器生成的指令和编译器通常不会生成的指令(这里排除了C语言里面内联汇编的情况)。编译器不会生成的指令如下几条:FENCE,FENCE.I,ECALL,EBREAK,CSRRW,CSRRS,CSRRC,CSRRWI,CSRRSI.CSRRCI,以及AUIPC。其中FENCE...原创 2019-02-14 23:37:44 · 6389 阅读 · 2 评论 -
建立RISCV32的工具链
这里以UBUNTU系统为例子, 1,首先需要安装以下包。# Ubuntu packages needed:sudo apt-get install autoconf automake autotools-dev curl libmpc-dev -y sudo apt-get install libmpfr-dev libgmp-dev build-essentia...原创 2019-02-14 22:28:09 · 2274 阅读 · 0 评论