控制信号brk_【Logisim实验】构建立即数-随机存储器-寄存器的传送

本文介绍了利用Logisim进行数据通路设计,重点在于控制信号brk,实现了寄存器到存储器、存储器到寄存器以及立即数到存储器和寄存器的四种控制结构。通过微指令控制器和数据选择器,详细阐述了如何完成数据的读写操作,并探讨了硬布线与微程序控制器的选择及其优缺点。
摘要由CSDN通过智能技术生成

关于Logisim

Logisim在仿真软件行列中算是比较直观的软件了,它能做的事情有很多,唯一不足的是硬件描述语言的支持,总体上来说适合比较底层的仿真,依赖于Hex值,通过线路逻辑设计能够较好的

关于本实验

计算机指令的执行过程设计是相对复杂的,指令的形式也是多种多样,按照格式可分为有二三单地址指令,根据访问部件的不同可分为立即数,RR,SS,RS等指令

本实验通过Logisim实现:

1.寄存器->存储器

2.存储器->寄存器

3.立即数->存储器

4.立即数->寄存器

的四种控制结构

正文

1)实现寄存器组

寄存器组能够组合成一个缓存序列,并按照每个寄存器的地址进行更改和访问,一次只能改写或读取一个寄存器内容。

a1219da03b834ae375f96e6410580ecb.png

2)立即数与主存储器

主存储器与寄存器都是存储部件能作为输入输出使用,立即数只能作为输入

d1a2dbda6fd64b6776e170bee06c199a.png

3)通路设计

控制数据通路实际是通过数据选择器不断的控制输入地址达到选择通路的效果。

可以的,你可以在 `TIM1_BRK_IRQHandler` 中添加定时器中断处理函数。需要注意的是,你需要在 `main` 函数中先对定时器进行初始化和启动,同时将中断使能。具体代码如下: 首先,在 `main.c` 中初始化定时器,并启动定时器和定时器中断: ``` TIM_HandleTypeDef htim1; uint32_t timerCount = 0; int main(void) { // ... // 初始化定时器 htim1.Instance = TIM1; htim1.Init.Prescaler = 999; htim1.Init.CounterMode = TIM_COUNTERMODE_UP; htim1.Init.Period = 7199; htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; if (HAL_TIM_Base_Init(&htim1) != HAL_OK) { Error_Handler(); } // 启动定时器 if (HAL_TIM_Base_Start_IT(&htim1) != HAL_OK) { Error_Handler(); } // 使能定时器中断 HAL_NVIC_EnableIRQ(TIM1_BRK_IRQn); // ... } ``` 然后在 `TIM1_BRK_IRQHandler` 中添加定时器中断处理函数: ``` void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if (htim == &htim1) { // 判断是哪个定时器的中断 timerCount++; // 定时器计数器加1 if (timerCount == 10) { // 如果定时器计数器为10,即1秒 // 执行需要的操作 // ... timerCount = 0; // 将计数器清零 } } } void TIM1_BRK_IRQHandler(void) { /* USER CODE BEGIN TIM1_BRK_IRQn 0 */ /* USER CODE END TIM1_BRK_IRQn 0 */ HAL_TIM_IRQHandler(&htim1); /* USER CODE BEGIN TIM1_BRK_IRQn 1 */ HAL_TIM_PeriodElapsedCallback(&htim1); // 定时器中断处理函数 /* USER CODE END TIM1_BRK_IRQn 1 */ } ``` 在上述代码中,定时器的频率为72MHz/1000=72kHz,即每个计数器单位为1/72kHz秒。定时器的周期为7199,因此定时器周期为7199*(1/72kHz)=0.1秒,即每0.1秒进入一次定时器中断处理函数。在中断处理函数中,定时器计数器加1,当计数器为10时,即1秒时,执行需要的操作,然后将计数器清零。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值